package de.upb.llvm_parser.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.upb.llvm_parser.services.LLVMGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalLLVMParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_SL_COMMENT", "RULE_STRING", "RULE_ARRAYL", "RULE_ARRAYR", "RULE_CSTRING", "RULE_INT", "RULE_INTEGER", "RULE_VAR_TYPE", "RULE_F_POINT", "RULE_OREST", "RULE_NOBRACKET", "RULE_POINT", "RULE_ID", "RULE_ML_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'module'", "'asm'", "'target'", "'datalayout'", "'triple'", "'='", "'deplibs'", "','", "'global'", "'unnamed_addr'", "'constant'", "'type'", "'zeroinitializer'", "'null'", "'{'", "')'", "'}'", "'x'", "'()*'", "'*'", "'<'", "'>'", "'alias'", "'void'", "'label'", "'undef'", "'true'", "'false'", "'opaque'", "'define'", "'section '", "'declare'", "'('", "'catch'", "':'", "')*'", "')**'", "')***'", "')****'", "'volatile'", "'getelementptr'", "'inbounds'", "'extractvalue'", "'insertvalue'", "'fence'", "'singlethread'", "'unordered'", "'monotonic'", "'aquire'", "'release'", "'acq_rel'", "'seq_cst'", "'cmpxchg'", "'atomicrmw'", "'xchg'", "'add'", "'sub'", "'and'", "'nand'", "'or'", "'xor'", "'max'", "'min'", "'umax'", "'umin'", "'load'", "'atomic'", "'align'", "'store'", "'tail'", "'call'", "'zeroext'", "'signext'", "'inreg'", "'byval'", "'sret'", "'noalias'", "'nocapture'", "'nest'", "'alloca'", "'ccc'", "'fastcc'", "'coldcc'", "'x86_stdcallcc'", "'x86_fastcallcc'", "'x86_thiscallcc'", "'arm_apcscc'", "'arm_aapcscc'", "'arm_aapcs_vfpcc'", "'msp430_intrcc'", "'ptx_kernel'", "'ptx_device'", "'spir_func'", "'spir_kernel'", "'cc'", "'address_safety'", "'alignstack'", "'alwaysinline'", "'nonlazybind'", "'inlinehint'", "'naked'", "'noimplicitfloat'", "'noinline'", "'noredzone'", "'noreturn'", "'nounwind'", "'optsize'", "'readnone'", "'readonly'", "'returns_twice'", "'ssp'", "'sspreq'", "'uwtable'", "'phi'", "'landingpad'", "'personality'", "'to'", "'cleanup'", "'filter'", "'select'", "'va_arg'", "'extractelement'", "'insertelement'", "'shufflevector'", "'trunc'", "'zext'", "'sext'", "'fptrunc'", "'fpext'", "'fptoui'", "'fptosi'", "'uitofp'", "'sitofp'", "'ptrtoint'", "'inttoptr'", "'bitcast'", "'icmp'", "'fcmp'", "'eq'", "'ne'", "'ugt'", "'uge'", "'ult'", "'ule'", "'sgt'", "'sge'", "'slt'", "'sle'", "'oeq'", "'ogt'", "'oge'", "'olt'", "'ole'", "'one'", "'ord'", "'ueq'", "'une'", "'uno'", "'fadd'", "'fsub'", "'mul'", "'fmul'", "'udiv'", "'sdiv'", "'fdiv'", "'urem'", "'srem'", "'frem'", "'nsw'", "'nuw'", "'shl'", "'lshr'", "'ashr'", "'indirectbr'", "'switch'", "'invoke'", "'unwind'", "'resume'", "'unreachable'", "'ret'", "'!dbg'", "'!'", "'br'", "'default'", "'hidden'", "'protected'", "'private'", "'linker_private'", "'linker_private_weak'", "'available_externally'", "'linkonce'", "'common'", "'appending'", "'extern_weak'", "'linkonce_odr'", "'linkonce_odr_auto_hide'", "'dllimport'", "'dllexport'", "'external'", "'internal'", "'weak'", "'weak_odr'", "'!{'", "'metadata'"
    };
    public static final int RULE_ID=16;
    public static final int RULE_VAR_TYPE=11;
    public static final int T__159=159;
    public static final int T__158=158;
    public static final int RULE_ANY_OTHER=19;
    public static final int T__160=160;
    public static final int T__167=167;
    public static final int EOF=-1;
    public static final int T__168=168;
    public static final int T__165=165;
    public static final int T__166=166;
    public static final int T__163=163;
    public static final int T__164=164;
    public static final int T__161=161;
    public static final int T__162=162;
    public static final int T__93=93;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int T__148=148;
    public static final int T__90=90;
    public static final int T__147=147;
    public static final int T__149=149;
    public static final int T__154=154;
    public static final int T__155=155;
    public static final int T__156=156;
    public static final int T__99=99;
    public static final int T__157=157;
    public static final int T__98=98;
    public static final int T__150=150;
    public static final int T__97=97;
    public static final int T__151=151;
    public static final int T__96=96;
    public static final int T__152=152;
    public static final int T__95=95;
    public static final int T__153=153;
    public static final int T__139=139;
    public static final int T__138=138;
    public static final int T__137=137;
    public static final int T__136=136;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__141=141;
    public static final int T__84=84;
    public static final int T__142=142;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__140=140;
    public static final int T__89=89;
    public static final int T__145=145;
    public static final int T__88=88;
    public static final int T__146=146;
    public static final int RULE_ML_COMMENT=17;
    public static final int T__143=143;
    public static final int T__144=144;
    public static final int T__126=126;
    public static final int T__125=125;
    public static final int T__128=128;
    public static final int RULE_STRING=5;
    public static final int T__127=127;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__129=129;
    public static final int T__70=70;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__130=130;
    public static final int T__73=73;
    public static final int T__131=131;
    public static final int T__132=132;
    public static final int T__79=79;
    public static final int T__133=133;
    public static final int T__78=78;
    public static final int T__134=134;
    public static final int T__77=77;
    public static final int T__135=135;
    public static final int T__215=215;
    public static final int T__216=216;
    public static final int T__213=213;
    public static final int T__214=214;
    public static final int T__219=219;
    public static final int T__217=217;
    public static final int T__218=218;
    public static final int T__118=118;
    public static final int T__119=119;
    public static final int T__116=116;
    public static final int T__117=117;
    public static final int T__114=114;
    public static final int T__115=115;
    public static final int T__124=124;
    public static final int T__123=123;
    public static final int T__122=122;
    public static final int T__121=121;
    public static final int T__120=120;
    public static final int T__223=223;
    public static final int T__222=222;
    public static final int T__221=221;
    public static final int T__220=220;
    public static final int T__202=202;
    public static final int RULE_ARRAYL=6;
    public static final int T__203=203;
    public static final int T__204=204;
    public static final int T__205=205;
    public static final int T__206=206;
    public static final int T__207=207;
    public static final int T__208=208;
    public static final int T__209=209;
    public static final int T__107=107;
    public static final int T__108=108;
    public static final int T__109=109;
    public static final int RULE_ARRAYR=7;
    public static final int T__103=103;
    public static final int T__104=104;
    public static final int T__105=105;
    public static final int T__106=106;
    public static final int T__111=111;
    public static final int T__110=110;
    public static final int T__113=113;
    public static final int T__112=112;
    public static final int T__210=210;
    public static final int T__212=212;
    public static final int RULE_NOBRACKET=14;
    public static final int T__211=211;
    public static final int T__102=102;
    public static final int T__101=101;
    public static final int T__100=100;
    public static final int RULE_SL_COMMENT=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int T__200=200;
    public static final int T__201=201;
    public static final int RULE_INTEGER=10;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__199=199;
    public static final int T__58=58;
    public static final int T__198=198;
    public static final int T__51=51;
    public static final int T__197=197;
    public static final int T__52=52;
    public static final int T__196=196;
    public static final int T__53=53;
    public static final int T__195=195;
    public static final int T__54=54;
    public static final int T__194=194;
    public static final int T__193=193;
    public static final int RULE_POINT=15;
    public static final int T__192=192;
    public static final int T__191=191;
    public static final int T__190=190;
    public static final int T__59=59;
    public static final int RULE_INT=9;
    public static final int RULE_CSTRING=8;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__184=184;
    public static final int T__43=43;
    public static final int T__183=183;
    public static final int T__40=40;
    public static final int T__186=186;
    public static final int T__41=41;
    public static final int T__185=185;
    public static final int T__46=46;
    public static final int T__188=188;
    public static final int T__47=47;
    public static final int T__187=187;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int T__189=189;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__180=180;
    public static final int T__182=182;
    public static final int T__181=181;
    public static final int T__175=175;
    public static final int T__30=30;
    public static final int T__174=174;
    public static final int T__31=31;
    public static final int T__173=173;
    public static final int T__32=32;
    public static final int T__172=172;
    public static final int RULE_F_POINT=12;
    public static final int T__33=33;
    public static final int T__179=179;
    public static final int T__34=34;
    public static final int T__178=178;
    public static final int T__35=35;
    public static final int T__177=177;
    public static final int T__36=36;
    public static final int T__176=176;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int T__171=171;
    public static final int T__170=170;
    public static final int RULE_OREST=13;
    public static final int RULE_WS=18;
    public static final int T__169=169;

    // delegates
    // delegators


        public InternalLLVMParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalLLVMParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalLLVMParser.tokenNames; }
    public String getGrammarFileName() { return "../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g"; }



     	private LLVMGrammarAccess grammarAccess;
     	
        public InternalLLVMParser(TokenStream input, LLVMGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "LLVM";	
       	}
       	
       	@Override
       	protected LLVMGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleLLVM"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:67:1: entryRuleLLVM returns [EObject current=null] : iv_ruleLLVM= ruleLLVM EOF ;
    public final EObject entryRuleLLVM() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLLVM = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:68:2: (iv_ruleLLVM= ruleLLVM EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:69:2: iv_ruleLLVM= ruleLLVM EOF
            {
             newCompositeNode(grammarAccess.getLLVMRule()); 
            pushFollow(FOLLOW_ruleLLVM_in_entryRuleLLVM75);
            iv_ruleLLVM=ruleLLVM();

            state._fsp--;

             current =iv_ruleLLVM; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLLVM85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLLVM"


    // $ANTLR start "ruleLLVM"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:76:1: ruleLLVM returns [EObject current=null] : ( (lv_elements_0_0= ruleAbstractElement ) )* ;
    public final EObject ruleLLVM() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:79:28: ( ( (lv_elements_0_0= ruleAbstractElement ) )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:80:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:80:1: ( (lv_elements_0_0= ruleAbstractElement ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( ((LA1_0>=RULE_INT && LA1_0<=RULE_VAR_TYPE)||LA1_0==20||LA1_0==22||LA1_0==26||LA1_0==33||(LA1_0>=43 && LA1_0<=47)||LA1_0==49||LA1_0==51) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:81:1: (lv_elements_0_0= ruleAbstractElement )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:81:1: (lv_elements_0_0= ruleAbstractElement )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:82:3: lv_elements_0_0= ruleAbstractElement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLLVMAccess().getElementsAbstractElementParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleAbstractElement_in_ruleLLVM130);
            	    lv_elements_0_0=ruleAbstractElement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLLVMRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"AbstractElement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLLVM"


    // $ANTLR start "entryRuleAbstractElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:106:1: entryRuleAbstractElement returns [EObject current=null] : iv_ruleAbstractElement= ruleAbstractElement EOF ;
    public final EObject entryRuleAbstractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAbstractElement = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:107:2: (iv_ruleAbstractElement= ruleAbstractElement EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:108:2: iv_ruleAbstractElement= ruleAbstractElement EOF
            {
             newCompositeNode(grammarAccess.getAbstractElementRule()); 
            pushFollow(FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166);
            iv_ruleAbstractElement=ruleAbstractElement();

            state._fsp--;

             current =iv_ruleAbstractElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAbstractElement176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAbstractElement"


    // $ANTLR start "ruleAbstractElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:115:1: ruleAbstractElement returns [EObject current=null] : ( (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? ) | (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? ) ) ;
    public final EObject ruleAbstractElement() throws RecognitionException {
        EObject current = null;

        Token this_SL_COMMENT_1=null;
        Token this_SL_COMMENT_3=null;
        EObject this_TopLevelEntity_0 = null;

        EObject this_MainLevelEntity_2 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:118:28: ( ( (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? ) | (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:119:1: ( (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? ) | (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:119:1: ( (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? ) | (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? ) )
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==20||LA4_0==22||LA4_0==26) ) {
                alt4=1;
            }
            else if ( ((LA4_0>=RULE_INT && LA4_0<=RULE_VAR_TYPE)||LA4_0==33||(LA4_0>=43 && LA4_0<=47)||LA4_0==49||LA4_0==51) ) {
                alt4=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 4, 0, input);

                throw nvae;
            }
            switch (alt4) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:119:2: (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:119:2: (this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:120:5: this_TopLevelEntity_0= ruleTopLevelEntity (this_SL_COMMENT_1= RULE_SL_COMMENT )?
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getTopLevelEntityParserRuleCall_0_0()); 
                        
                    pushFollow(FOLLOW_ruleTopLevelEntity_in_ruleAbstractElement224);
                    this_TopLevelEntity_0=ruleTopLevelEntity();

                    state._fsp--;

                     
                            current = this_TopLevelEntity_0; 
                            afterParserOrEnumRuleCall();
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:128:1: (this_SL_COMMENT_1= RULE_SL_COMMENT )?
                    int alt2=2;
                    int LA2_0 = input.LA(1);

                    if ( (LA2_0==RULE_SL_COMMENT) ) {
                        alt2=1;
                    }
                    switch (alt2) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:128:2: this_SL_COMMENT_1= RULE_SL_COMMENT
                            {
                            this_SL_COMMENT_1=(Token)match(input,RULE_SL_COMMENT,FOLLOW_RULE_SL_COMMENT_in_ruleAbstractElement235); 
                             
                                newLeafNode(this_SL_COMMENT_1, grammarAccess.getAbstractElementAccess().getSL_COMMENTTerminalRuleCall_0_1()); 
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:133:6: (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:133:6: (this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:134:5: this_MainLevelEntity_2= ruleMainLevelEntity (this_SL_COMMENT_3= RULE_SL_COMMENT )?
                    {
                     
                            newCompositeNode(grammarAccess.getAbstractElementAccess().getMainLevelEntityParserRuleCall_1_0()); 
                        
                    pushFollow(FOLLOW_ruleMainLevelEntity_in_ruleAbstractElement266);
                    this_MainLevelEntity_2=ruleMainLevelEntity();

                    state._fsp--;

                     
                            current = this_MainLevelEntity_2; 
                            afterParserOrEnumRuleCall();
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:142:1: (this_SL_COMMENT_3= RULE_SL_COMMENT )?
                    int alt3=2;
                    int LA3_0 = input.LA(1);

                    if ( (LA3_0==RULE_SL_COMMENT) ) {
                        alt3=1;
                    }
                    switch (alt3) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:142:2: this_SL_COMMENT_3= RULE_SL_COMMENT
                            {
                            this_SL_COMMENT_3=(Token)match(input,RULE_SL_COMMENT,FOLLOW_RULE_SL_COMMENT_in_ruleAbstractElement277); 
                             
                                newLeafNode(this_SL_COMMENT_3, grammarAccess.getAbstractElementAccess().getSL_COMMENTTerminalRuleCall_1_1()); 
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAbstractElement"


    // $ANTLR start "entryRuleTopLevelEntity"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:154:1: entryRuleTopLevelEntity returns [EObject current=null] : iv_ruleTopLevelEntity= ruleTopLevelEntity EOF ;
    public final EObject entryRuleTopLevelEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTopLevelEntity = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:155:2: (iv_ruleTopLevelEntity= ruleTopLevelEntity EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:156:2: iv_ruleTopLevelEntity= ruleTopLevelEntity EOF
            {
             newCompositeNode(grammarAccess.getTopLevelEntityRule()); 
            pushFollow(FOLLOW_ruleTopLevelEntity_in_entryRuleTopLevelEntity315);
            iv_ruleTopLevelEntity=ruleTopLevelEntity();

            state._fsp--;

             current =iv_ruleTopLevelEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTopLevelEntity325); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTopLevelEntity"


    // $ANTLR start "ruleTopLevelEntity"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:163:1: ruleTopLevelEntity returns [EObject current=null] : ( (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) ) | (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) ) | (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR ) ) ;
    public final EObject ruleTopLevelEntity() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_module_2_0=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_target_7_0=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token this_ARRAYL_10=null;
        Token lv_libs_11_0=null;
        Token otherlv_12=null;
        Token lv_libs_13_0=null;
        Token this_ARRAYR_14=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:166:28: ( ( (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) ) | (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) ) | (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:167:1: ( (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) ) | (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) ) | (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:167:1: ( (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) ) | (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) ) | (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR ) )
            int alt7=3;
            switch ( input.LA(1) ) {
            case 20:
                {
                alt7=1;
                }
                break;
            case 22:
                {
                alt7=2;
                }
                break;
            case 26:
                {
                alt7=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 7, 0, input);

                throw nvae;
            }

            switch (alt7) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:167:2: (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:167:2: (otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:167:4: otherlv_0= 'module' otherlv_1= 'asm' ( (lv_module_2_0= RULE_STRING ) )
                    {
                    otherlv_0=(Token)match(input,20,FOLLOW_20_in_ruleTopLevelEntity363); 

                        	newLeafNode(otherlv_0, grammarAccess.getTopLevelEntityAccess().getModuleKeyword_0_0());
                        
                    otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleTopLevelEntity375); 

                        	newLeafNode(otherlv_1, grammarAccess.getTopLevelEntityAccess().getAsmKeyword_0_1());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:175:1: ( (lv_module_2_0= RULE_STRING ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:176:1: (lv_module_2_0= RULE_STRING )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:176:1: (lv_module_2_0= RULE_STRING )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:177:3: lv_module_2_0= RULE_STRING
                    {
                    lv_module_2_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTopLevelEntity392); 

                    			newLeafNode(lv_module_2_0, grammarAccess.getTopLevelEntityAccess().getModuleSTRINGTerminalRuleCall_0_2_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTopLevelEntityRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"module",
                            		lv_module_2_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:194:6: (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:194:6: (otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:194:8: otherlv_3= 'target' (otherlv_4= 'datalayout' | otherlv_5= 'triple' ) otherlv_6= '=' ( (lv_target_7_0= RULE_STRING ) )
                    {
                    otherlv_3=(Token)match(input,22,FOLLOW_22_in_ruleTopLevelEntity417); 

                        	newLeafNode(otherlv_3, grammarAccess.getTopLevelEntityAccess().getTargetKeyword_1_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:198:1: (otherlv_4= 'datalayout' | otherlv_5= 'triple' )
                    int alt5=2;
                    int LA5_0 = input.LA(1);

                    if ( (LA5_0==23) ) {
                        alt5=1;
                    }
                    else if ( (LA5_0==24) ) {
                        alt5=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 5, 0, input);

                        throw nvae;
                    }
                    switch (alt5) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:198:3: otherlv_4= 'datalayout'
                            {
                            otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleTopLevelEntity430); 

                                	newLeafNode(otherlv_4, grammarAccess.getTopLevelEntityAccess().getDatalayoutKeyword_1_1_0());
                                

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:203:7: otherlv_5= 'triple'
                            {
                            otherlv_5=(Token)match(input,24,FOLLOW_24_in_ruleTopLevelEntity448); 

                                	newLeafNode(otherlv_5, grammarAccess.getTopLevelEntityAccess().getTripleKeyword_1_1_1());
                                

                            }
                            break;

                    }

                    otherlv_6=(Token)match(input,25,FOLLOW_25_in_ruleTopLevelEntity461); 

                        	newLeafNode(otherlv_6, grammarAccess.getTopLevelEntityAccess().getEqualsSignKeyword_1_2());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:211:1: ( (lv_target_7_0= RULE_STRING ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:212:1: (lv_target_7_0= RULE_STRING )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:212:1: (lv_target_7_0= RULE_STRING )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:213:3: lv_target_7_0= RULE_STRING
                    {
                    lv_target_7_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTopLevelEntity478); 

                    			newLeafNode(lv_target_7_0, grammarAccess.getTopLevelEntityAccess().getTargetSTRINGTerminalRuleCall_1_3_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTopLevelEntityRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"target",
                            		lv_target_7_0, 
                            		"STRING");
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:230:6: (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:230:6: (otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:230:8: otherlv_8= 'deplibs' otherlv_9= '=' this_ARRAYL_10= RULE_ARRAYL ( (lv_libs_11_0= RULE_STRING ) ) (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )* this_ARRAYR_14= RULE_ARRAYR
                    {
                    otherlv_8=(Token)match(input,26,FOLLOW_26_in_ruleTopLevelEntity503); 

                        	newLeafNode(otherlv_8, grammarAccess.getTopLevelEntityAccess().getDeplibsKeyword_2_0());
                        
                    otherlv_9=(Token)match(input,25,FOLLOW_25_in_ruleTopLevelEntity515); 

                        	newLeafNode(otherlv_9, grammarAccess.getTopLevelEntityAccess().getEqualsSignKeyword_2_1());
                        
                    this_ARRAYL_10=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleTopLevelEntity526); 
                     
                        newLeafNode(this_ARRAYL_10, grammarAccess.getTopLevelEntityAccess().getARRAYLTerminalRuleCall_2_2()); 
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:242:1: ( (lv_libs_11_0= RULE_STRING ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:243:1: (lv_libs_11_0= RULE_STRING )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:243:1: (lv_libs_11_0= RULE_STRING )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:244:3: lv_libs_11_0= RULE_STRING
                    {
                    lv_libs_11_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTopLevelEntity542); 

                    			newLeafNode(lv_libs_11_0, grammarAccess.getTopLevelEntityAccess().getLibsSTRINGTerminalRuleCall_2_3_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTopLevelEntityRule());
                    	        }
                           		addWithLastConsumed(
                           			current, 
                           			"libs",
                            		lv_libs_11_0, 
                            		"STRING");
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:260:2: (otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) ) )*
                    loop6:
                    do {
                        int alt6=2;
                        int LA6_0 = input.LA(1);

                        if ( (LA6_0==27) ) {
                            alt6=1;
                        }


                        switch (alt6) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:260:4: otherlv_12= ',' ( (lv_libs_13_0= RULE_STRING ) )
                    	    {
                    	    otherlv_12=(Token)match(input,27,FOLLOW_27_in_ruleTopLevelEntity560); 

                    	        	newLeafNode(otherlv_12, grammarAccess.getTopLevelEntityAccess().getCommaKeyword_2_4_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:264:1: ( (lv_libs_13_0= RULE_STRING ) )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:265:1: (lv_libs_13_0= RULE_STRING )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:265:1: (lv_libs_13_0= RULE_STRING )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:266:3: lv_libs_13_0= RULE_STRING
                    	    {
                    	    lv_libs_13_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTopLevelEntity577); 

                    	    			newLeafNode(lv_libs_13_0, grammarAccess.getTopLevelEntityAccess().getLibsSTRINGTerminalRuleCall_2_4_1_0()); 
                    	    		

                    	    	        if (current==null) {
                    	    	            current = createModelElement(grammarAccess.getTopLevelEntityRule());
                    	    	        }
                    	           		addWithLastConsumed(
                    	           			current, 
                    	           			"libs",
                    	            		lv_libs_13_0, 
                    	            		"STRING");
                    	    	    

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop6;
                        }
                    } while (true);

                    this_ARRAYR_14=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleTopLevelEntity595); 
                     
                        newLeafNode(this_ARRAYR_14, grammarAccess.getTopLevelEntityAccess().getARRAYRTerminalRuleCall_2_5()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTopLevelEntity"


    // $ANTLR start "entryRuleMainLevelEntity"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:294:1: entryRuleMainLevelEntity returns [EObject current=null] : iv_ruleMainLevelEntity= ruleMainLevelEntity EOF ;
    public final EObject entryRuleMainLevelEntity() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMainLevelEntity = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:295:2: (iv_ruleMainLevelEntity= ruleMainLevelEntity EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:296:2: iv_ruleMainLevelEntity= ruleMainLevelEntity EOF
            {
             newCompositeNode(grammarAccess.getMainLevelEntityRule()); 
            pushFollow(FOLLOW_ruleMainLevelEntity_in_entryRuleMainLevelEntity631);
            iv_ruleMainLevelEntity=ruleMainLevelEntity();

            state._fsp--;

             current =iv_ruleMainLevelEntity; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMainLevelEntity641); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMainLevelEntity"


    // $ANTLR start "ruleMainLevelEntity"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:303:1: ruleMainLevelEntity returns [EObject current=null] : (this_FunctionHeader_0= ruleFunctionHeader | this_NamedType_1= ruleNamedType ) ;
    public final EObject ruleMainLevelEntity() throws RecognitionException {
        EObject current = null;

        EObject this_FunctionHeader_0 = null;

        EObject this_NamedType_1 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:306:28: ( (this_FunctionHeader_0= ruleFunctionHeader | this_NamedType_1= ruleNamedType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:307:1: (this_FunctionHeader_0= ruleFunctionHeader | this_NamedType_1= ruleNamedType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:307:1: (this_FunctionHeader_0= ruleFunctionHeader | this_NamedType_1= ruleNamedType )
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==49||LA8_0==51) ) {
                alt8=1;
            }
            else if ( ((LA8_0>=RULE_INT && LA8_0<=RULE_VAR_TYPE)||LA8_0==33||(LA8_0>=43 && LA8_0<=47)) ) {
                alt8=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 8, 0, input);

                throw nvae;
            }
            switch (alt8) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:308:5: this_FunctionHeader_0= ruleFunctionHeader
                    {
                     
                            newCompositeNode(grammarAccess.getMainLevelEntityAccess().getFunctionHeaderParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleFunctionHeader_in_ruleMainLevelEntity688);
                    this_FunctionHeader_0=ruleFunctionHeader();

                    state._fsp--;

                     
                            current = this_FunctionHeader_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:318:5: this_NamedType_1= ruleNamedType
                    {
                     
                            newCompositeNode(grammarAccess.getMainLevelEntityAccess().getNamedTypeParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleNamedType_in_ruleMainLevelEntity715);
                    this_NamedType_1=ruleNamedType();

                    state._fsp--;

                     
                            current = this_NamedType_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMainLevelEntity"


    // $ANTLR start "entryRuleNamedType"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:334:1: entryRuleNamedType returns [EObject current=null] : iv_ruleNamedType= ruleNamedType EOF ;
    public final EObject entryRuleNamedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedType = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:335:2: (iv_ruleNamedType= ruleNamedType EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:336:2: iv_ruleNamedType= ruleNamedType EOF
            {
             newCompositeNode(grammarAccess.getNamedTypeRule()); 
            pushFollow(FOLLOW_ruleNamedType_in_entryRuleNamedType750);
            iv_ruleNamedType=ruleNamedType();

            state._fsp--;

             current =iv_ruleNamedType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedType760); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedType"


    // $ANTLR start "ruleNamedType"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:343:1: ruleNamedType returns [EObject current=null] : ( ( (lv_name_0_0= ruleType ) ) otherlv_1= '=' ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )* ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) ) ) ;
    public final EObject ruleNamedType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token this_CSTRING_12=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token this_INT_21=null;
        Token otherlv_22=null;
        Token otherlv_23=null;
        Token otherlv_24=null;
        AntlrDatatypeRuleToken lv_name_0_0 = null;

        EObject lv_struct_7_0 = null;

        EObject lv_instr_9_0 = null;

        EObject lv_array_10_0 = null;

        EObject lv_caststruct_11_0 = null;

        EObject lv_struct_17_0 = null;

        EObject lv_caststruct_18_0 = null;

        EObject lv_alias_19_0 = null;

        AntlrDatatypeRuleToken lv_type_20_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:346:28: ( ( ( (lv_name_0_0= ruleType ) ) otherlv_1= '=' ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )* ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:347:1: ( ( (lv_name_0_0= ruleType ) ) otherlv_1= '=' ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )* ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:347:1: ( ( (lv_name_0_0= ruleType ) ) otherlv_1= '=' ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )* ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:347:2: ( (lv_name_0_0= ruleType ) ) otherlv_1= '=' ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )* ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:347:2: ( (lv_name_0_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:348:1: (lv_name_0_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:348:1: (lv_name_0_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:349:3: lv_name_0_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getNamedTypeAccess().getNameTypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleNamedType806);
            lv_name_0_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
            	        }
                   		set(
                   			current, 
                   			"name",
                    		lv_name_0_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleNamedType818); 

                	newLeafNode(otherlv_1, grammarAccess.getNamedTypeAccess().getEqualsSignKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:369:1: ( ruleLINKAGE | otherlv_3= 'global' | otherlv_4= 'unnamed_addr' | otherlv_5= 'constant' )*
            loop9:
            do {
                int alt9=5;
                switch ( input.LA(1) ) {
                case 206:
                case 207:
                case 208:
                case 209:
                case 210:
                case 211:
                case 212:
                case 213:
                case 214:
                case 215:
                case 216:
                case 217:
                case 218:
                case 219:
                case 220:
                case 221:
                    {
                    alt9=1;
                    }
                    break;
                case 28:
                    {
                    alt9=2;
                    }
                    break;
                case 29:
                    {
                    alt9=3;
                    }
                    break;
                case 30:
                    {
                    alt9=4;
                    }
                    break;

                }

                switch (alt9) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:370:5: ruleLINKAGE
            	    {
            	     
            	            newCompositeNode(grammarAccess.getNamedTypeAccess().getLINKAGEParserRuleCall_2_0()); 
            	        
            	    pushFollow(FOLLOW_ruleLINKAGE_in_ruleNamedType835);
            	    ruleLINKAGE();

            	    state._fsp--;

            	     
            	            afterParserOrEnumRuleCall();
            	        

            	    }
            	    break;
            	case 2 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:378:7: otherlv_3= 'global'
            	    {
            	    otherlv_3=(Token)match(input,28,FOLLOW_28_in_ruleNamedType852); 

            	        	newLeafNode(otherlv_3, grammarAccess.getNamedTypeAccess().getGlobalKeyword_2_1());
            	        

            	    }
            	    break;
            	case 3 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:383:7: otherlv_4= 'unnamed_addr'
            	    {
            	    otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleNamedType870); 

            	        	newLeafNode(otherlv_4, grammarAccess.getNamedTypeAccess().getUnnamed_addrKeyword_2_2());
            	        

            	    }
            	    break;
            	case 4 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:388:7: otherlv_5= 'constant'
            	    {
            	    otherlv_5=(Token)match(input,30,FOLLOW_30_in_ruleNamedType888); 

            	        	newLeafNode(otherlv_5, grammarAccess.getNamedTypeAccess().getConstantKeyword_2_3());
            	        

            	    }
            	    break;

            	default :
            	    break loop9;
                }
            } while (true);

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:392:3: ( (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) ) | ( (lv_instr_9_0= ruleInstruction ) ) | ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? ) | ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) ) | ( (lv_alias_19_0= ruleAlias ) ) | ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? ) )
            int alt17=6;
            switch ( input.LA(1) ) {
            case 31:
                {
                alt17=1;
                }
                break;
            case 59:
            case 60:
            case 62:
            case 63:
            case 64:
            case 72:
            case 73:
            case 75:
            case 76:
            case 77:
            case 79:
            case 80:
            case 85:
            case 88:
            case 89:
            case 90:
            case 99:
            case 133:
            case 134:
            case 139:
            case 140:
            case 141:
            case 142:
            case 143:
            case 144:
            case 145:
            case 146:
            case 147:
            case 148:
            case 149:
            case 150:
            case 151:
            case 152:
            case 153:
            case 154:
            case 155:
            case 156:
            case 157:
            case 178:
            case 179:
            case 180:
            case 181:
            case 182:
            case 183:
            case 184:
            case 185:
            case 186:
            case 187:
            case 190:
            case 191:
            case 192:
                {
                alt17=2;
                }
                break;
            case RULE_ARRAYL:
                {
                alt17=3;
                }
                break;
            case 34:
            case 40:
                {
                alt17=4;
                }
                break;
            case 42:
                {
                alt17=5;
                }
                break;
            case RULE_INT:
            case RULE_INTEGER:
            case RULE_VAR_TYPE:
            case 33:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
                {
                alt17=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:392:4: (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:392:4: (otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:392:6: otherlv_6= 'type' ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque )
                    {
                    otherlv_6=(Token)match(input,31,FOLLOW_31_in_ruleNamedType904); 

                        	newLeafNode(otherlv_6, grammarAccess.getNamedTypeAccess().getTypeKeyword_3_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:396:1: ( ( (lv_struct_7_0= ruleStructure ) ) | ruleOpaque )
                    int alt10=2;
                    int LA10_0 = input.LA(1);

                    if ( (LA10_0==34||LA10_0==40) ) {
                        alt10=1;
                    }
                    else if ( (LA10_0==48) ) {
                        alt10=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 10, 0, input);

                        throw nvae;
                    }
                    switch (alt10) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:396:2: ( (lv_struct_7_0= ruleStructure ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:396:2: ( (lv_struct_7_0= ruleStructure ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:397:1: (lv_struct_7_0= ruleStructure )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:397:1: (lv_struct_7_0= ruleStructure )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:398:3: lv_struct_7_0= ruleStructure
                            {
                             
                            	        newCompositeNode(grammarAccess.getNamedTypeAccess().getStructStructureParserRuleCall_3_0_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleStructure_in_ruleNamedType926);
                            lv_struct_7_0=ruleStructure();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"struct",
                                    		lv_struct_7_0, 
                                    		"Structure");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:416:5: ruleOpaque
                            {
                             
                                    newCompositeNode(grammarAccess.getNamedTypeAccess().getOpaqueParserRuleCall_3_0_1_1()); 
                                
                            pushFollow(FOLLOW_ruleOpaque_in_ruleNamedType948);
                            ruleOpaque();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:424:6: ( (lv_instr_9_0= ruleInstruction ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:424:6: ( (lv_instr_9_0= ruleInstruction ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:425:1: (lv_instr_9_0= ruleInstruction )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:425:1: (lv_instr_9_0= ruleInstruction )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:426:3: lv_instr_9_0= ruleInstruction
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getInstrInstructionParserRuleCall_3_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleInstruction_in_ruleNamedType976);
                    lv_instr_9_0=ruleInstruction();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"instr",
                            		lv_instr_9_0, 
                            		"Instruction");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:443:6: ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:443:6: ( ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:443:7: ( (lv_array_10_0= ruleARRAY ) ) ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:443:7: ( (lv_array_10_0= ruleARRAY ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:444:1: (lv_array_10_0= ruleARRAY )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:444:1: (lv_array_10_0= ruleARRAY )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:445:3: lv_array_10_0= ruleARRAY
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getArrayARRAYParserRuleCall_3_2_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleARRAY_in_ruleNamedType1004);
                    lv_array_10_0=ruleARRAY();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"array",
                            		lv_array_10_0, 
                            		"ARRAY");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:461:2: ( ( (lv_caststruct_11_0= ruleCastStructure ) ) | (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? ) )?
                    int alt13=3;
                    int LA13_0 = input.LA(1);

                    if ( (LA13_0==RULE_ARRAYL||LA13_0==34) ) {
                        alt13=1;
                    }
                    else if ( (LA13_0==RULE_CSTRING) ) {
                        alt13=2;
                    }
                    switch (alt13) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:461:3: ( (lv_caststruct_11_0= ruleCastStructure ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:461:3: ( (lv_caststruct_11_0= ruleCastStructure ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:462:1: (lv_caststruct_11_0= ruleCastStructure )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:462:1: (lv_caststruct_11_0= ruleCastStructure )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:463:3: lv_caststruct_11_0= ruleCastStructure
                            {
                             
                            	        newCompositeNode(grammarAccess.getNamedTypeAccess().getCaststructCastStructureParserRuleCall_3_2_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleCastStructure_in_ruleNamedType1026);
                            lv_caststruct_11_0=ruleCastStructure();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"caststruct",
                                    		lv_caststruct_11_0, 
                                    		"CastStructure");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:480:6: (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:480:6: (this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )? )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:480:7: this_CSTRING_12= RULE_CSTRING (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )* (otherlv_15= ',' ruleALIGNMENT )?
                            {
                            this_CSTRING_12=(Token)match(input,RULE_CSTRING,FOLLOW_RULE_CSTRING_in_ruleNamedType1044); 
                             
                                newLeafNode(this_CSTRING_12, grammarAccess.getNamedTypeAccess().getCSTRINGTerminalRuleCall_3_2_1_1_0()); 
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:484:1: (otherlv_13= 'zeroinitializer' | otherlv_14= 'null' )*
                            loop11:
                            do {
                                int alt11=3;
                                int LA11_0 = input.LA(1);

                                if ( (LA11_0==33) ) {
                                    int LA11_2 = input.LA(2);

                                    if ( (LA11_2==EOF||LA11_2==RULE_SL_COMMENT||(LA11_2>=RULE_INT && LA11_2<=RULE_VAR_TYPE)||LA11_2==20||LA11_2==22||(LA11_2>=26 && LA11_2<=27)||(LA11_2>=32 && LA11_2<=33)||(LA11_2>=43 && LA11_2<=47)||LA11_2==49||LA11_2==51||(LA11_2>=59 && LA11_2<=60)||(LA11_2>=62 && LA11_2<=64)||(LA11_2>=72 && LA11_2<=73)||(LA11_2>=75 && LA11_2<=77)||(LA11_2>=79 && LA11_2<=80)||LA11_2==85||(LA11_2>=88 && LA11_2<=90)||LA11_2==99||(LA11_2>=133 && LA11_2<=134)||(LA11_2>=139 && LA11_2<=157)||(LA11_2>=178 && LA11_2<=187)||(LA11_2>=190 && LA11_2<=195)||(LA11_2>=197 && LA11_2<=199)||LA11_2==202) ) {
                                        alt11=2;
                                    }


                                }
                                else if ( (LA11_0==32) ) {
                                    alt11=1;
                                }


                                switch (alt11) {
                            	case 1 :
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:484:3: otherlv_13= 'zeroinitializer'
                            	    {
                            	    otherlv_13=(Token)match(input,32,FOLLOW_32_in_ruleNamedType1056); 

                            	        	newLeafNode(otherlv_13, grammarAccess.getNamedTypeAccess().getZeroinitializerKeyword_3_2_1_1_1_0());
                            	        

                            	    }
                            	    break;
                            	case 2 :
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:489:7: otherlv_14= 'null'
                            	    {
                            	    otherlv_14=(Token)match(input,33,FOLLOW_33_in_ruleNamedType1074); 

                            	        	newLeafNode(otherlv_14, grammarAccess.getNamedTypeAccess().getNullKeyword_3_2_1_1_1_1());
                            	        

                            	    }
                            	    break;

                            	default :
                            	    break loop11;
                                }
                            } while (true);

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:493:3: (otherlv_15= ',' ruleALIGNMENT )?
                            int alt12=2;
                            int LA12_0 = input.LA(1);

                            if ( (LA12_0==27) ) {
                                alt12=1;
                            }
                            switch (alt12) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:493:5: otherlv_15= ',' ruleALIGNMENT
                                    {
                                    otherlv_15=(Token)match(input,27,FOLLOW_27_in_ruleNamedType1089); 

                                        	newLeafNode(otherlv_15, grammarAccess.getNamedTypeAccess().getCommaKeyword_3_2_1_1_2_0());
                                        
                                     
                                            newCompositeNode(grammarAccess.getNamedTypeAccess().getALIGNMENTParserRuleCall_3_2_1_1_2_1()); 
                                        
                                    pushFollow(FOLLOW_ruleALIGNMENT_in_ruleNamedType1105);
                                    ruleALIGNMENT();

                                    state._fsp--;

                                     
                                            afterParserOrEnumRuleCall();
                                        

                                    }
                                    break;

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:506:6: ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:506:6: ( ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:506:7: ( (lv_struct_17_0= ruleStructure ) ) ( (lv_caststruct_18_0= ruleCastStructure ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:506:7: ( (lv_struct_17_0= ruleStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:507:1: (lv_struct_17_0= ruleStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:507:1: (lv_struct_17_0= ruleStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:508:3: lv_struct_17_0= ruleStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getStructStructureParserRuleCall_3_3_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStructure_in_ruleNamedType1138);
                    lv_struct_17_0=ruleStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"struct",
                            		lv_struct_17_0, 
                            		"Structure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:524:2: ( (lv_caststruct_18_0= ruleCastStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:525:1: (lv_caststruct_18_0= ruleCastStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:525:1: (lv_caststruct_18_0= ruleCastStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:526:3: lv_caststruct_18_0= ruleCastStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getCaststructCastStructureParserRuleCall_3_3_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCastStructure_in_ruleNamedType1159);
                    lv_caststruct_18_0=ruleCastStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"caststruct",
                            		lv_caststruct_18_0, 
                            		"CastStructure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:543:6: ( (lv_alias_19_0= ruleAlias ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:543:6: ( (lv_alias_19_0= ruleAlias ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:544:1: (lv_alias_19_0= ruleAlias )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:544:1: (lv_alias_19_0= ruleAlias )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:545:3: lv_alias_19_0= ruleAlias
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getAliasAliasParserRuleCall_3_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleAlias_in_ruleNamedType1187);
                    lv_alias_19_0=ruleAlias();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"alias",
                            		lv_alias_19_0, 
                            		"Alias");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:562:6: ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:562:6: ( ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:562:7: ( (lv_type_20_0= ruleType ) ) (this_INT_21= RULE_INT )? (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )* (otherlv_24= ',' ruleALIGNMENT )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:562:7: ( (lv_type_20_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:563:1: (lv_type_20_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:563:1: (lv_type_20_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:564:3: lv_type_20_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getNamedTypeAccess().getTypeTypeParserRuleCall_3_5_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleNamedType1215);
                    lv_type_20_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_20_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:580:2: (this_INT_21= RULE_INT )?
                    int alt14=2;
                    int LA14_0 = input.LA(1);

                    if ( (LA14_0==RULE_INT) ) {
                        int LA14_1 = input.LA(2);

                        if ( (LA14_1==EOF||LA14_1==RULE_SL_COMMENT||(LA14_1>=RULE_INT && LA14_1<=RULE_VAR_TYPE)||LA14_1==20||LA14_1==22||(LA14_1>=26 && LA14_1<=27)||(LA14_1>=32 && LA14_1<=33)||(LA14_1>=43 && LA14_1<=47)||LA14_1==49||LA14_1==51||(LA14_1>=59 && LA14_1<=60)||(LA14_1>=62 && LA14_1<=64)||(LA14_1>=72 && LA14_1<=73)||(LA14_1>=75 && LA14_1<=77)||(LA14_1>=79 && LA14_1<=80)||LA14_1==85||(LA14_1>=88 && LA14_1<=90)||LA14_1==99||(LA14_1>=133 && LA14_1<=134)||(LA14_1>=139 && LA14_1<=157)||(LA14_1>=178 && LA14_1<=187)||(LA14_1>=190 && LA14_1<=195)||(LA14_1>=197 && LA14_1<=199)||LA14_1==202) ) {
                            alt14=1;
                        }
                    }
                    switch (alt14) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:580:3: this_INT_21= RULE_INT
                            {
                            this_INT_21=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleNamedType1227); 
                             
                                newLeafNode(this_INT_21, grammarAccess.getNamedTypeAccess().getINTTerminalRuleCall_3_5_1()); 
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:584:3: (otherlv_22= 'zeroinitializer' | otherlv_23= 'null' )*
                    loop15:
                    do {
                        int alt15=3;
                        int LA15_0 = input.LA(1);

                        if ( (LA15_0==33) ) {
                            int LA15_2 = input.LA(2);

                            if ( (LA15_2==EOF||LA15_2==RULE_SL_COMMENT||(LA15_2>=RULE_INT && LA15_2<=RULE_VAR_TYPE)||LA15_2==20||LA15_2==22||(LA15_2>=26 && LA15_2<=27)||(LA15_2>=32 && LA15_2<=33)||(LA15_2>=43 && LA15_2<=47)||LA15_2==49||LA15_2==51||(LA15_2>=59 && LA15_2<=60)||(LA15_2>=62 && LA15_2<=64)||(LA15_2>=72 && LA15_2<=73)||(LA15_2>=75 && LA15_2<=77)||(LA15_2>=79 && LA15_2<=80)||LA15_2==85||(LA15_2>=88 && LA15_2<=90)||LA15_2==99||(LA15_2>=133 && LA15_2<=134)||(LA15_2>=139 && LA15_2<=157)||(LA15_2>=178 && LA15_2<=187)||(LA15_2>=190 && LA15_2<=195)||(LA15_2>=197 && LA15_2<=199)||LA15_2==202) ) {
                                alt15=2;
                            }


                        }
                        else if ( (LA15_0==32) ) {
                            alt15=1;
                        }


                        switch (alt15) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:584:5: otherlv_22= 'zeroinitializer'
                    	    {
                    	    otherlv_22=(Token)match(input,32,FOLLOW_32_in_ruleNamedType1241); 

                    	        	newLeafNode(otherlv_22, grammarAccess.getNamedTypeAccess().getZeroinitializerKeyword_3_5_2_0());
                    	        

                    	    }
                    	    break;
                    	case 2 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:589:7: otherlv_23= 'null'
                    	    {
                    	    otherlv_23=(Token)match(input,33,FOLLOW_33_in_ruleNamedType1259); 

                    	        	newLeafNode(otherlv_23, grammarAccess.getNamedTypeAccess().getNullKeyword_3_5_2_1());
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop15;
                        }
                    } while (true);

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:593:3: (otherlv_24= ',' ruleALIGNMENT )?
                    int alt16=2;
                    int LA16_0 = input.LA(1);

                    if ( (LA16_0==27) ) {
                        alt16=1;
                    }
                    switch (alt16) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:593:5: otherlv_24= ',' ruleALIGNMENT
                            {
                            otherlv_24=(Token)match(input,27,FOLLOW_27_in_ruleNamedType1274); 

                                	newLeafNode(otherlv_24, grammarAccess.getNamedTypeAccess().getCommaKeyword_3_5_3_0());
                                
                             
                                    newCompositeNode(grammarAccess.getNamedTypeAccess().getALIGNMENTParserRuleCall_3_5_3_1()); 
                                
                            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleNamedType1290);
                            ruleALIGNMENT();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedType"


    // $ANTLR start "entryRuleCastStructure"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:613:1: entryRuleCastStructure returns [EObject current=null] : iv_ruleCastStructure= ruleCastStructure EOF ;
    public final EObject entryRuleCastStructure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCastStructure = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:614:2: (iv_ruleCastStructure= ruleCastStructure EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:615:2: iv_ruleCastStructure= ruleCastStructure EOF
            {
             newCompositeNode(grammarAccess.getCastStructureRule()); 
            pushFollow(FOLLOW_ruleCastStructure_in_entryRuleCastStructure1329);
            iv_ruleCastStructure=ruleCastStructure();

            state._fsp--;

             current =iv_ruleCastStructure; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCastStructure1339); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCastStructure"


    // $ANTLR start "ruleCastStructure"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:622:1: ruleCastStructure returns [EObject current=null] : ( (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL ) ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* ) (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR ) ) ;
    public final EObject ruleCastStructure() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token this_ARRAYL_1=null;
        Token this_INT_5=null;
        Token this_INTEGER_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token this_INT_11=null;
        Token this_INTEGER_12=null;
        Token otherlv_13=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token this_INT_20=null;
        Token this_INTEGER_21=null;
        Token otherlv_22=null;
        Token this_ARRAYR_23=null;
        AntlrDatatypeRuleToken lv_type_2_0 = null;

        EObject lv_op_3_1 = null;

        EObject lv_op_3_2 = null;

        AntlrDatatypeRuleToken lv_type_9_0 = null;

        AntlrDatatypeRuleToken lv_type_14_0 = null;

        EObject lv_op_15_1 = null;

        EObject lv_op_15_2 = null;

        AntlrDatatypeRuleToken lv_type_18_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:625:28: ( ( (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL ) ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* ) (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:626:1: ( (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL ) ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* ) (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:626:1: ( (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL ) ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* ) (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:626:2: (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL ) ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* ) (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:626:2: (otherlv_0= '{' | this_ARRAYL_1= RULE_ARRAYL )
            int alt18=2;
            int LA18_0 = input.LA(1);

            if ( (LA18_0==34) ) {
                alt18=1;
            }
            else if ( (LA18_0==RULE_ARRAYL) ) {
                alt18=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }
            switch (alt18) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:626:4: otherlv_0= '{'
                    {
                    otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleCastStructure1377); 

                        	newLeafNode(otherlv_0, grammarAccess.getCastStructureAccess().getLeftCurlyBracketKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:631:6: this_ARRAYL_1= RULE_ARRAYL
                    {
                    this_ARRAYL_1=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleCastStructure1394); 
                     
                        newLeafNode(this_ARRAYL_1, grammarAccess.getCastStructureAccess().getARRAYLTerminalRuleCall_0_1()); 
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:635:2: ( ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:635:3: ( (lv_type_2_0= ruleType ) ) ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER ) ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )? (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )*
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:635:3: ( (lv_type_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:636:1: (lv_type_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:636:1: (lv_type_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:637:3: lv_type_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCastStructureAccess().getTypeTypeParserRuleCall_1_0_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCastStructure1416);
            lv_type_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
            	        }
                   		add(
                   			current, 
                   			"type",
                    		lv_type_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:653:2: ( ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) ) | rulePrimitive | this_INT_5= RULE_INT | this_INTEGER_6= RULE_INTEGER )
            int alt20=4;
            switch ( input.LA(1) ) {
            case 60:
            case 144:
            case 145:
            case 146:
            case 147:
            case 148:
            case 149:
            case 150:
            case 151:
            case 152:
            case 153:
            case 154:
            case 155:
                {
                alt20=1;
                }
                break;
            case 33:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
                {
                alt20=2;
                }
                break;
            case RULE_INT:
                {
                alt20=3;
                }
                break;
            case RULE_INTEGER:
                {
                alt20=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }

            switch (alt20) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:653:3: ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:653:3: ( ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:654:1: ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:654:1: ( (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:655:1: (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:655:1: (lv_op_3_1= ruleCast | lv_op_3_2= ruleGetElementPtr )
                    int alt19=2;
                    int LA19_0 = input.LA(1);

                    if ( ((LA19_0>=144 && LA19_0<=155)) ) {
                        alt19=1;
                    }
                    else if ( (LA19_0==60) ) {
                        alt19=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 19, 0, input);

                        throw nvae;
                    }
                    switch (alt19) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:656:3: lv_op_3_1= ruleCast
                            {
                             
                            	        newCompositeNode(grammarAccess.getCastStructureAccess().getOpCastParserRuleCall_1_1_0_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleCast_in_ruleCastStructure1440);
                            lv_op_3_1=ruleCast();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"op",
                                    		lv_op_3_1, 
                                    		"Cast");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:671:8: lv_op_3_2= ruleGetElementPtr
                            {
                             
                            	        newCompositeNode(grammarAccess.getCastStructureAccess().getOpGetElementPtrParserRuleCall_1_1_0_0_1()); 
                            	    
                            pushFollow(FOLLOW_ruleGetElementPtr_in_ruleCastStructure1459);
                            lv_op_3_2=ruleGetElementPtr();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"op",
                                    		lv_op_3_2, 
                                    		"GetElementPtr");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:691:5: rulePrimitive
                    {
                     
                            newCompositeNode(grammarAccess.getCastStructureAccess().getPrimitiveParserRuleCall_1_1_1()); 
                        
                    pushFollow(FOLLOW_rulePrimitive_in_ruleCastStructure1484);
                    rulePrimitive();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:699:6: this_INT_5= RULE_INT
                    {
                    this_INT_5=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleCastStructure1500); 
                     
                        newLeafNode(this_INT_5, grammarAccess.getCastStructureAccess().getINTTerminalRuleCall_1_1_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:704:6: this_INTEGER_6= RULE_INTEGER
                    {
                    this_INTEGER_6=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleCastStructure1516); 
                     
                        newLeafNode(this_INTEGER_6, grammarAccess.getCastStructureAccess().getINTEGERTerminalRuleCall_1_1_3()); 
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:708:2: ( (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )* )?
            int alt24=2;
            int LA24_0 = input.LA(1);

            if ( (LA24_0==35) ) {
                alt24=1;
            }
            switch (alt24) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:708:3: (otherlv_7= ')' )+ (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )*
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:708:3: (otherlv_7= ')' )+
                    int cnt21=0;
                    loop21:
                    do {
                        int alt21=2;
                        int LA21_0 = input.LA(1);

                        if ( (LA21_0==35) ) {
                            alt21=1;
                        }


                        switch (alt21) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:708:5: otherlv_7= ')'
                    	    {
                    	    otherlv_7=(Token)match(input,35,FOLLOW_35_in_ruleCastStructure1530); 

                    	        	newLeafNode(otherlv_7, grammarAccess.getCastStructureAccess().getRightParenthesisKeyword_1_2_0());
                    	        

                    	    }
                    	    break;

                    	default :
                    	    if ( cnt21 >= 1 ) break loop21;
                                EarlyExitException eee =
                                    new EarlyExitException(21, input);
                                throw eee;
                        }
                        cnt21++;
                    } while (true);

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:712:3: (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )*
                    loop23:
                    do {
                        int alt23=2;
                        alt23 = dfa23.predict(input);
                        switch (alt23) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:712:5: otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER )
                    	    {
                    	    otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleCastStructure1545); 

                    	        	newLeafNode(otherlv_8, grammarAccess.getCastStructureAccess().getCommaKeyword_1_2_1_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:716:1: ( (lv_type_9_0= ruleType ) )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:717:1: (lv_type_9_0= ruleType )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:717:1: (lv_type_9_0= ruleType )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:718:3: lv_type_9_0= ruleType
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getCastStructureAccess().getTypeTypeParserRuleCall_1_2_1_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleType_in_ruleCastStructure1566);
                    	    lv_type_9_0=ruleType();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"type",
                    	            		lv_type_9_0, 
                    	            		"Type");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:734:2: ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER )
                    	    int alt22=3;
                    	    switch ( input.LA(1) ) {
                    	    case 33:
                    	    case 43:
                    	    case 44:
                    	    case 45:
                    	    case 46:
                    	    case 47:
                    	        {
                    	        alt22=1;
                    	        }
                    	        break;
                    	    case RULE_INT:
                    	        {
                    	        alt22=2;
                    	        }
                    	        break;
                    	    case RULE_INTEGER:
                    	        {
                    	        alt22=3;
                    	        }
                    	        break;
                    	    default:
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 22, 0, input);

                    	        throw nvae;
                    	    }

                    	    switch (alt22) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:735:5: rulePrimitive
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getCastStructureAccess().getPrimitiveParserRuleCall_1_2_1_2_0()); 
                    	                
                    	            pushFollow(FOLLOW_rulePrimitive_in_ruleCastStructure1583);
                    	            rulePrimitive();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:743:6: this_INT_11= RULE_INT
                    	            {
                    	            this_INT_11=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleCastStructure1599); 
                    	             
                    	                newLeafNode(this_INT_11, grammarAccess.getCastStructureAccess().getINTTerminalRuleCall_1_2_1_2_1()); 
                    	                

                    	            }
                    	            break;
                    	        case 3 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:748:6: this_INTEGER_12= RULE_INTEGER
                    	            {
                    	            this_INTEGER_12=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleCastStructure1615); 
                    	             
                    	                newLeafNode(this_INTEGER_12, grammarAccess.getCastStructureAccess().getINTEGERTerminalRuleCall_1_2_1_2_2()); 
                    	                

                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop23;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:752:6: (otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )? )*
            loop30:
            do {
                int alt30=2;
                int LA30_0 = input.LA(1);

                if ( (LA30_0==27) ) {
                    alt30=1;
                }


                switch (alt30) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:752:8: otherlv_13= ',' ( (lv_type_14_0= ruleType ) ) ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) ) ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )?
            	    {
            	    otherlv_13=(Token)match(input,27,FOLLOW_27_in_ruleCastStructure1632); 

            	        	newLeafNode(otherlv_13, grammarAccess.getCastStructureAccess().getCommaKeyword_1_3_0());
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:756:1: ( (lv_type_14_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:757:1: (lv_type_14_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:757:1: (lv_type_14_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:758:3: lv_type_14_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getCastStructureAccess().getTypeTypeParserRuleCall_1_3_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleCastStructure1653);
            	    lv_type_14_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"type",
            	            		lv_type_14_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:774:2: ( ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:775:1: ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:775:1: ( (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:776:1: (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:776:1: (lv_op_15_1= ruleCast | lv_op_15_2= ruleGetElementPtr )
            	    int alt25=2;
            	    int LA25_0 = input.LA(1);

            	    if ( ((LA25_0>=144 && LA25_0<=155)) ) {
            	        alt25=1;
            	    }
            	    else if ( (LA25_0==60) ) {
            	        alt25=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 25, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt25) {
            	        case 1 :
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:777:3: lv_op_15_1= ruleCast
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getCastStructureAccess().getOpCastParserRuleCall_1_3_2_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleCast_in_ruleCastStructure1676);
            	            lv_op_15_1=ruleCast();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"op",
            	                    		lv_op_15_1, 
            	                    		"Cast");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;
            	        case 2 :
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:792:8: lv_op_15_2= ruleGetElementPtr
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getCastStructureAccess().getOpGetElementPtrParserRuleCall_1_3_2_0_1()); 
            	            	    
            	            pushFollow(FOLLOW_ruleGetElementPtr_in_ruleCastStructure1695);
            	            lv_op_15_2=ruleGetElementPtr();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"op",
            	                    		lv_op_15_2, 
            	                    		"GetElementPtr");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;

            	    }


            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:810:2: ( (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )* )?
            	    int alt29=2;
            	    int LA29_0 = input.LA(1);

            	    if ( (LA29_0==35) ) {
            	        alt29=1;
            	    }
            	    switch (alt29) {
            	        case 1 :
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:810:3: (otherlv_16= ')' )+ (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )*
            	            {
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:810:3: (otherlv_16= ')' )+
            	            int cnt26=0;
            	            loop26:
            	            do {
            	                int alt26=2;
            	                int LA26_0 = input.LA(1);

            	                if ( (LA26_0==35) ) {
            	                    alt26=1;
            	                }


            	                switch (alt26) {
            	            	case 1 :
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:810:5: otherlv_16= ')'
            	            	    {
            	            	    otherlv_16=(Token)match(input,35,FOLLOW_35_in_ruleCastStructure1712); 

            	            	        	newLeafNode(otherlv_16, grammarAccess.getCastStructureAccess().getRightParenthesisKeyword_1_3_3_0());
            	            	        

            	            	    }
            	            	    break;

            	            	default :
            	            	    if ( cnt26 >= 1 ) break loop26;
            	                        EarlyExitException eee =
            	                            new EarlyExitException(26, input);
            	                        throw eee;
            	                }
            	                cnt26++;
            	            } while (true);

            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:814:3: (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )*
            	            loop28:
            	            do {
            	                int alt28=2;
            	                alt28 = dfa28.predict(input);
            	                switch (alt28) {
            	            	case 1 :
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:814:5: otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER )
            	            	    {
            	            	    otherlv_17=(Token)match(input,27,FOLLOW_27_in_ruleCastStructure1727); 

            	            	        	newLeafNode(otherlv_17, grammarAccess.getCastStructureAccess().getCommaKeyword_1_3_3_1_0());
            	            	        
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:818:1: ( (lv_type_18_0= ruleType ) )
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:819:1: (lv_type_18_0= ruleType )
            	            	    {
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:819:1: (lv_type_18_0= ruleType )
            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:820:3: lv_type_18_0= ruleType
            	            	    {
            	            	     
            	            	    	        newCompositeNode(grammarAccess.getCastStructureAccess().getTypeTypeParserRuleCall_1_3_3_1_1_0()); 
            	            	    	    
            	            	    pushFollow(FOLLOW_ruleType_in_ruleCastStructure1748);
            	            	    lv_type_18_0=ruleType();

            	            	    state._fsp--;


            	            	    	        if (current==null) {
            	            	    	            current = createModelElementForParent(grammarAccess.getCastStructureRule());
            	            	    	        }
            	            	           		add(
            	            	           			current, 
            	            	           			"type",
            	            	            		lv_type_18_0, 
            	            	            		"Type");
            	            	    	        afterParserOrEnumRuleCall();
            	            	    	    

            	            	    }


            	            	    }

            	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:836:2: ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER )
            	            	    int alt27=3;
            	            	    switch ( input.LA(1) ) {
            	            	    case 33:
            	            	    case 43:
            	            	    case 44:
            	            	    case 45:
            	            	    case 46:
            	            	    case 47:
            	            	        {
            	            	        alt27=1;
            	            	        }
            	            	        break;
            	            	    case RULE_INT:
            	            	        {
            	            	        alt27=2;
            	            	        }
            	            	        break;
            	            	    case RULE_INTEGER:
            	            	        {
            	            	        alt27=3;
            	            	        }
            	            	        break;
            	            	    default:
            	            	        NoViableAltException nvae =
            	            	            new NoViableAltException("", 27, 0, input);

            	            	        throw nvae;
            	            	    }

            	            	    switch (alt27) {
            	            	        case 1 :
            	            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:837:5: rulePrimitive
            	            	            {
            	            	             
            	            	                    newCompositeNode(grammarAccess.getCastStructureAccess().getPrimitiveParserRuleCall_1_3_3_1_2_0()); 
            	            	                
            	            	            pushFollow(FOLLOW_rulePrimitive_in_ruleCastStructure1765);
            	            	            rulePrimitive();

            	            	            state._fsp--;

            	            	             
            	            	                    afterParserOrEnumRuleCall();
            	            	                

            	            	            }
            	            	            break;
            	            	        case 2 :
            	            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:845:6: this_INT_20= RULE_INT
            	            	            {
            	            	            this_INT_20=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleCastStructure1781); 
            	            	             
            	            	                newLeafNode(this_INT_20, grammarAccess.getCastStructureAccess().getINTTerminalRuleCall_1_3_3_1_2_1()); 
            	            	                

            	            	            }
            	            	            break;
            	            	        case 3 :
            	            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:850:6: this_INTEGER_21= RULE_INTEGER
            	            	            {
            	            	            this_INTEGER_21=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleCastStructure1797); 
            	            	             
            	            	                newLeafNode(this_INTEGER_21, grammarAccess.getCastStructureAccess().getINTEGERTerminalRuleCall_1_3_3_1_2_2()); 
            	            	                

            	            	            }
            	            	            break;

            	            	    }


            	            	    }
            	            	    break;

            	            	default :
            	            	    break loop28;
            	                }
            	            } while (true);


            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop30;
                }
            } while (true);


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:854:9: (otherlv_22= '}' | this_ARRAYR_23= RULE_ARRAYR )
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==36) ) {
                alt31=1;
            }
            else if ( (LA31_0==RULE_ARRAYR) ) {
                alt31=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:854:11: otherlv_22= '}'
                    {
                    otherlv_22=(Token)match(input,36,FOLLOW_36_in_ruleCastStructure1817); 

                        	newLeafNode(otherlv_22, grammarAccess.getCastStructureAccess().getRightCurlyBracketKeyword_2_0());
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:859:6: this_ARRAYR_23= RULE_ARRAYR
                    {
                    this_ARRAYR_23=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleCastStructure1834); 
                     
                        newLeafNode(this_ARRAYR_23, grammarAccess.getCastStructureAccess().getARRAYRTerminalRuleCall_2_1()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCastStructure"


    // $ANTLR start "entryRuleType"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:871:1: entryRuleType returns [String current=null] : iv_ruleType= ruleType EOF ;
    public final String entryRuleType() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleType = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:872:2: (iv_ruleType= ruleType EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:873:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType1871);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType1882); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:880:1: ruleType returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_VAR_TYPE_0= RULE_VAR_TYPE | this_INT_1= RULE_INT | this_INTEGER_2= RULE_INTEGER | this_Primitive_3= rulePrimitive ) ;
    public final AntlrDatatypeRuleToken ruleType() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_VAR_TYPE_0=null;
        Token this_INT_1=null;
        Token this_INTEGER_2=null;
        AntlrDatatypeRuleToken this_Primitive_3 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:883:28: ( (this_VAR_TYPE_0= RULE_VAR_TYPE | this_INT_1= RULE_INT | this_INTEGER_2= RULE_INTEGER | this_Primitive_3= rulePrimitive ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:884:1: (this_VAR_TYPE_0= RULE_VAR_TYPE | this_INT_1= RULE_INT | this_INTEGER_2= RULE_INTEGER | this_Primitive_3= rulePrimitive )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:884:1: (this_VAR_TYPE_0= RULE_VAR_TYPE | this_INT_1= RULE_INT | this_INTEGER_2= RULE_INTEGER | this_Primitive_3= rulePrimitive )
            int alt32=4;
            switch ( input.LA(1) ) {
            case RULE_VAR_TYPE:
                {
                alt32=1;
                }
                break;
            case RULE_INT:
                {
                alt32=2;
                }
                break;
            case RULE_INTEGER:
                {
                alt32=3;
                }
                break;
            case 33:
            case 43:
            case 44:
            case 45:
            case 46:
            case 47:
                {
                alt32=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }

            switch (alt32) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:884:6: this_VAR_TYPE_0= RULE_VAR_TYPE
                    {
                    this_VAR_TYPE_0=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleType1922); 

                    		current.merge(this_VAR_TYPE_0);
                        
                     
                        newLeafNode(this_VAR_TYPE_0, grammarAccess.getTypeAccess().getVAR_TYPETerminalRuleCall_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:892:10: this_INT_1= RULE_INT
                    {
                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleType1948); 

                    		current.merge(this_INT_1);
                        
                     
                        newLeafNode(this_INT_1, grammarAccess.getTypeAccess().getINTTerminalRuleCall_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:900:10: this_INTEGER_2= RULE_INTEGER
                    {
                    this_INTEGER_2=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleType1974); 

                    		current.merge(this_INTEGER_2);
                        
                     
                        newLeafNode(this_INTEGER_2, grammarAccess.getTypeAccess().getINTEGERTerminalRuleCall_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:909:5: this_Primitive_3= rulePrimitive
                    {
                     
                            newCompositeNode(grammarAccess.getTypeAccess().getPrimitiveParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_rulePrimitive_in_ruleType2007);
                    this_Primitive_3=rulePrimitive();

                    state._fsp--;


                    		current.merge(this_Primitive_3);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleARRAY"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:927:1: entryRuleARRAY returns [EObject current=null] : iv_ruleARRAY= ruleARRAY EOF ;
    public final EObject entryRuleARRAY() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleARRAY = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:928:2: (iv_ruleARRAY= ruleARRAY EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:929:2: iv_ruleARRAY= ruleARRAY EOF
            {
             newCompositeNode(grammarAccess.getARRAYRule()); 
            pushFollow(FOLLOW_ruleARRAY_in_entryRuleARRAY2052);
            iv_ruleARRAY=ruleARRAY();

            state._fsp--;

             current =iv_ruleARRAY; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleARRAY2062); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleARRAY"


    // $ANTLR start "ruleARRAY"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:936:1: ruleARRAY returns [EObject current=null] : ( () this_ARRAYL_1= RULE_ARRAYL this_INT_2= RULE_INT otherlv_3= 'x' (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT ) this_ARRAYR_8= RULE_ARRAYR (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )? ) ;
    public final EObject ruleARRAY() throws RecognitionException {
        EObject current = null;

        Token this_ARRAYL_1=null;
        Token this_INT_2=null;
        Token otherlv_3=null;
        Token this_INTEGER_4=null;
        Token this_VAR_TYPE_5=null;
        Token this_F_POINT_7=null;
        Token this_ARRAYR_8=null;
        Token this_ARRAYL_9=null;
        Token this_ARRAYR_12=null;
        EObject lv_struct_6_0 = null;

        EObject lv_lstruct_10_0 = null;

        EObject lv_rstruct_11_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:939:28: ( ( () this_ARRAYL_1= RULE_ARRAYL this_INT_2= RULE_INT otherlv_3= 'x' (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT ) this_ARRAYR_8= RULE_ARRAYR (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )? ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:940:1: ( () this_ARRAYL_1= RULE_ARRAYL this_INT_2= RULE_INT otherlv_3= 'x' (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT ) this_ARRAYR_8= RULE_ARRAYR (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )? )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:940:1: ( () this_ARRAYL_1= RULE_ARRAYL this_INT_2= RULE_INT otherlv_3= 'x' (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT ) this_ARRAYR_8= RULE_ARRAYR (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )? )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:940:2: () this_ARRAYL_1= RULE_ARRAYL this_INT_2= RULE_INT otherlv_3= 'x' (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT ) this_ARRAYR_8= RULE_ARRAYR (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )?
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:940:2: ()
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:941:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getARRAYAccess().getARRAYAction_0(),
                        current);
                

            }

            this_ARRAYL_1=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleARRAY2107); 
             
                newLeafNode(this_ARRAYL_1, grammarAccess.getARRAYAccess().getARRAYLTerminalRuleCall_1()); 
                
            this_INT_2=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleARRAY2117); 
             
                newLeafNode(this_INT_2, grammarAccess.getARRAYAccess().getINTTerminalRuleCall_2()); 
                
            otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleARRAY2128); 

                	newLeafNode(otherlv_3, grammarAccess.getARRAYAccess().getXKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:958:1: (this_INTEGER_4= RULE_INTEGER | this_VAR_TYPE_5= RULE_VAR_TYPE | ( (lv_struct_6_0= ruleStructure ) ) | this_F_POINT_7= RULE_F_POINT )
            int alt33=4;
            switch ( input.LA(1) ) {
            case RULE_INTEGER:
                {
                alt33=1;
                }
                break;
            case RULE_VAR_TYPE:
                {
                alt33=2;
                }
                break;
            case 34:
            case 40:
                {
                alt33=3;
                }
                break;
            case RULE_F_POINT:
                {
                alt33=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 33, 0, input);

                throw nvae;
            }

            switch (alt33) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:958:2: this_INTEGER_4= RULE_INTEGER
                    {
                    this_INTEGER_4=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleARRAY2140); 
                     
                        newLeafNode(this_INTEGER_4, grammarAccess.getARRAYAccess().getINTEGERTerminalRuleCall_4_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:963:6: this_VAR_TYPE_5= RULE_VAR_TYPE
                    {
                    this_VAR_TYPE_5=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleARRAY2156); 
                     
                        newLeafNode(this_VAR_TYPE_5, grammarAccess.getARRAYAccess().getVAR_TYPETerminalRuleCall_4_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:968:6: ( (lv_struct_6_0= ruleStructure ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:968:6: ( (lv_struct_6_0= ruleStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:969:1: (lv_struct_6_0= ruleStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:969:1: (lv_struct_6_0= ruleStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:970:3: lv_struct_6_0= ruleStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getARRAYAccess().getStructStructureParserRuleCall_4_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStructure_in_ruleARRAY2182);
                    lv_struct_6_0=ruleStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getARRAYRule());
                    	        }
                           		set(
                           			current, 
                           			"struct",
                            		lv_struct_6_0, 
                            		"Structure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:987:6: this_F_POINT_7= RULE_F_POINT
                    {
                    this_F_POINT_7=(Token)match(input,RULE_F_POINT,FOLLOW_RULE_F_POINT_in_ruleARRAY2199); 
                     
                        newLeafNode(this_F_POINT_7, grammarAccess.getARRAYAccess().getF_POINTTerminalRuleCall_4_3()); 
                        

                    }
                    break;

            }

            this_ARRAYR_8=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleARRAY2210); 
             
                newLeafNode(this_ARRAYR_8, grammarAccess.getARRAYAccess().getARRAYRTerminalRuleCall_5()); 
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:995:1: (this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==RULE_ARRAYL) ) {
                int LA34_1 = input.LA(2);

                if ( (LA34_1==34||LA34_1==40) ) {
                    alt34=1;
                }
            }
            switch (alt34) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:995:2: this_ARRAYL_9= RULE_ARRAYL ( (lv_lstruct_10_0= ruleStructure ) ) ( (lv_rstruct_11_0= ruleValueStruct ) ) this_ARRAYR_12= RULE_ARRAYR
                    {
                    this_ARRAYL_9=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleARRAY2221); 
                     
                        newLeafNode(this_ARRAYL_9, grammarAccess.getARRAYAccess().getARRAYLTerminalRuleCall_6_0()); 
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:999:1: ( (lv_lstruct_10_0= ruleStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1000:1: (lv_lstruct_10_0= ruleStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1000:1: (lv_lstruct_10_0= ruleStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1001:3: lv_lstruct_10_0= ruleStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getARRAYAccess().getLstructStructureParserRuleCall_6_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStructure_in_ruleARRAY2241);
                    lv_lstruct_10_0=ruleStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getARRAYRule());
                    	        }
                           		set(
                           			current, 
                           			"lstruct",
                            		lv_lstruct_10_0, 
                            		"Structure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1017:2: ( (lv_rstruct_11_0= ruleValueStruct ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1018:1: (lv_rstruct_11_0= ruleValueStruct )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1018:1: (lv_rstruct_11_0= ruleValueStruct )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1019:3: lv_rstruct_11_0= ruleValueStruct
                    {
                     
                    	        newCompositeNode(grammarAccess.getARRAYAccess().getRstructValueStructParserRuleCall_6_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleValueStruct_in_ruleARRAY2262);
                    lv_rstruct_11_0=ruleValueStruct();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getARRAYRule());
                    	        }
                           		set(
                           			current, 
                           			"rstruct",
                            		lv_rstruct_11_0, 
                            		"ValueStruct");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    this_ARRAYR_12=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleARRAY2273); 
                     
                        newLeafNode(this_ARRAYR_12, grammarAccess.getARRAYAccess().getARRAYRTerminalRuleCall_6_3()); 
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleARRAY"


    // $ANTLR start "entryRuleValueStruct"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1047:1: entryRuleValueStruct returns [EObject current=null] : iv_ruleValueStruct= ruleValueStruct EOF ;
    public final EObject entryRuleValueStruct() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValueStruct = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1048:2: (iv_ruleValueStruct= ruleValueStruct EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1049:2: iv_ruleValueStruct= ruleValueStruct EOF
            {
             newCompositeNode(grammarAccess.getValueStructRule()); 
            pushFollow(FOLLOW_ruleValueStruct_in_entryRuleValueStruct2310);
            iv_ruleValueStruct=ruleValueStruct();

            state._fsp--;

             current =iv_ruleValueStruct; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleValueStruct2320); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValueStruct"


    // $ANTLR start "ruleValueStruct"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1056:1: ruleValueStruct returns [EObject current=null] : (otherlv_0= '{' ( (lv_types_1_0= ruleType ) ) (otherlv_2= '()*' )? ( (lv_Value_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) ) otherlv_8= '}' ) ;
    public final EObject ruleValueStruct() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_types_1_0 = null;

        AntlrDatatypeRuleToken lv_Value_3_0 = null;

        AntlrDatatypeRuleToken lv_types_5_0 = null;

        AntlrDatatypeRuleToken lv_Value_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1059:28: ( (otherlv_0= '{' ( (lv_types_1_0= ruleType ) ) (otherlv_2= '()*' )? ( (lv_Value_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) ) otherlv_8= '}' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1060:1: (otherlv_0= '{' ( (lv_types_1_0= ruleType ) ) (otherlv_2= '()*' )? ( (lv_Value_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) ) otherlv_8= '}' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1060:1: (otherlv_0= '{' ( (lv_types_1_0= ruleType ) ) (otherlv_2= '()*' )? ( (lv_Value_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) ) otherlv_8= '}' )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1060:3: otherlv_0= '{' ( (lv_types_1_0= ruleType ) ) (otherlv_2= '()*' )? ( (lv_Value_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) ) otherlv_8= '}'
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleValueStruct2357); 

                	newLeafNode(otherlv_0, grammarAccess.getValueStructAccess().getLeftCurlyBracketKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1064:1: ( (lv_types_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1065:1: (lv_types_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1065:1: (lv_types_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1066:3: lv_types_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValueStructAccess().getTypesTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValueStruct2378);
            lv_types_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValueStructRule());
            	        }
                   		add(
                   			current, 
                   			"types",
                    		lv_types_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1082:2: (otherlv_2= '()*' )?
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==38) ) {
                alt35=1;
            }
            switch (alt35) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1082:4: otherlv_2= '()*'
                    {
                    otherlv_2=(Token)match(input,38,FOLLOW_38_in_ruleValueStruct2391); 

                        	newLeafNode(otherlv_2, grammarAccess.getValueStructAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_2());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1086:3: ( (lv_Value_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1087:1: (lv_Value_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1087:1: (lv_Value_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1088:3: lv_Value_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValueStructAccess().getValueTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValueStruct2414);
            lv_Value_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValueStructRule());
            	        }
                   		add(
                   			current, 
                   			"Value",
                    		lv_Value_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1104:2: (otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1104:4: otherlv_4= ',' ( (lv_types_5_0= ruleType ) ) (otherlv_6= '()*' )? ( (lv_Value_7_0= ruleType ) )
            {
            otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleValueStruct2427); 

                	newLeafNode(otherlv_4, grammarAccess.getValueStructAccess().getCommaKeyword_4_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1108:1: ( (lv_types_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1109:1: (lv_types_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1109:1: (lv_types_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1110:3: lv_types_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValueStructAccess().getTypesTypeParserRuleCall_4_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValueStruct2448);
            lv_types_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValueStructRule());
            	        }
                   		add(
                   			current, 
                   			"types",
                    		lv_types_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1126:2: (otherlv_6= '()*' )?
            int alt36=2;
            int LA36_0 = input.LA(1);

            if ( (LA36_0==38) ) {
                alt36=1;
            }
            switch (alt36) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1126:4: otherlv_6= '()*'
                    {
                    otherlv_6=(Token)match(input,38,FOLLOW_38_in_ruleValueStruct2461); 

                        	newLeafNode(otherlv_6, grammarAccess.getValueStructAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_4_2());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1130:3: ( (lv_Value_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1131:1: (lv_Value_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1131:1: (lv_Value_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1132:3: lv_Value_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValueStructAccess().getValueTypeParserRuleCall_4_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValueStruct2484);
            lv_Value_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValueStructRule());
            	        }
                   		add(
                   			current, 
                   			"Value",
                    		lv_Value_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }

            otherlv_8=(Token)match(input,36,FOLLOW_36_in_ruleValueStruct2497); 

                	newLeafNode(otherlv_8, grammarAccess.getValueStructAccess().getRightCurlyBracketKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValueStruct"


    // $ANTLR start "entryRuleStructure"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1160:1: entryRuleStructure returns [EObject current=null] : iv_ruleStructure= ruleStructure EOF ;
    public final EObject entryRuleStructure() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStructure = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1161:2: (iv_ruleStructure= ruleStructure EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1162:2: iv_ruleStructure= ruleStructure EOF
            {
             newCompositeNode(grammarAccess.getStructureRule()); 
            pushFollow(FOLLOW_ruleStructure_in_entryRuleStructure2533);
            iv_ruleStructure=ruleStructure();

            state._fsp--;

             current =iv_ruleStructure; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStructure2543); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStructure"


    // $ANTLR start "ruleStructure"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1169:1: ruleStructure returns [EObject current=null] : ( ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* ) | ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' ) ) ;
    public final EObject ruleStructure() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        Token this_OREST_5=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token this_OREST_11=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token this_OREST_20=null;
        Token otherlv_22=null;
        Token this_OREST_25=null;
        Token otherlv_27=null;
        Token otherlv_28=null;
        AntlrDatatypeRuleToken lv_types_2_0 = null;

        EObject lv_arrays_4_0 = null;

        EObject lv_Lists_6_0 = null;

        AntlrDatatypeRuleToken lv_types_8_0 = null;

        EObject lv_arrays_10_0 = null;

        EObject lv_Lists_12_0 = null;

        AntlrDatatypeRuleToken lv_types_18_0 = null;

        EObject lv_arrays_19_0 = null;

        EObject lv_Lists_21_0 = null;

        AntlrDatatypeRuleToken lv_types_23_0 = null;

        EObject lv_arrays_24_0 = null;

        EObject lv_Lists_26_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1172:28: ( ( ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* ) | ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:1: ( ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* ) | ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:1: ( ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* ) | ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' ) )
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==34) ) {
                alt56=1;
            }
            else if ( (LA56_0==40) ) {
                alt56=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 56, 0, input);

                throw nvae;
            }
            switch (alt56) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:2: ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:2: ( () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )* )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:3: () otherlv_1= '{' ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )? otherlv_13= '}' (otherlv_14= '*' )*
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1173:3: ()
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1174:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getStructureAccess().getStructureAction_0_0(),
                                current);
                        

                    }

                    otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleStructure2590); 

                        	newLeafNode(otherlv_1, grammarAccess.getStructureAccess().getLeftCurlyBracketKeyword_0_1());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:1: ( ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )* )?
                    int alt46=2;
                    int LA46_0 = input.LA(1);

                    if ( (LA46_0==RULE_ARRAYL||(LA46_0>=RULE_INT && LA46_0<=RULE_VAR_TYPE)||LA46_0==33||(LA46_0>=43 && LA46_0<=47)) ) {
                        alt46=1;
                    }
                    switch (alt46) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:2: ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) ) (this_OREST_5= RULE_OREST )? ( (lv_Lists_6_0= ruleTypeList ) )? (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )*
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:2: ( ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? ) | ( (lv_arrays_4_0= ruleARRAY ) ) )
                            int alt38=2;
                            int LA38_0 = input.LA(1);

                            if ( ((LA38_0>=RULE_INT && LA38_0<=RULE_VAR_TYPE)||LA38_0==33||(LA38_0>=43 && LA38_0<=47)) ) {
                                alt38=1;
                            }
                            else if ( (LA38_0==RULE_ARRAYL) ) {
                                alt38=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 38, 0, input);

                                throw nvae;
                            }
                            switch (alt38) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:3: ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:3: ( ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )? )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:4: ( (lv_types_2_0= ruleType ) ) (otherlv_3= '()*' )?
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1183:4: ( (lv_types_2_0= ruleType ) )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1184:1: (lv_types_2_0= ruleType )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1184:1: (lv_types_2_0= ruleType )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1185:3: lv_types_2_0= ruleType
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getTypesTypeParserRuleCall_0_2_0_0_0_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleType_in_ruleStructure2614);
                                    lv_types_2_0=ruleType();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"types",
                                            		lv_types_2_0, 
                                            		"Type");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }

                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1201:2: (otherlv_3= '()*' )?
                                    int alt37=2;
                                    int LA37_0 = input.LA(1);

                                    if ( (LA37_0==38) ) {
                                        alt37=1;
                                    }
                                    switch (alt37) {
                                        case 1 :
                                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1201:4: otherlv_3= '()*'
                                            {
                                            otherlv_3=(Token)match(input,38,FOLLOW_38_in_ruleStructure2627); 

                                                	newLeafNode(otherlv_3, grammarAccess.getStructureAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_0_2_0_0_1());
                                                

                                            }
                                            break;

                                    }


                                    }


                                    }
                                    break;
                                case 2 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1206:6: ( (lv_arrays_4_0= ruleARRAY ) )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1206:6: ( (lv_arrays_4_0= ruleARRAY ) )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1207:1: (lv_arrays_4_0= ruleARRAY )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1207:1: (lv_arrays_4_0= ruleARRAY )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1208:3: lv_arrays_4_0= ruleARRAY
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getArraysARRAYParserRuleCall_0_2_0_1_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleARRAY_in_ruleStructure2657);
                                    lv_arrays_4_0=ruleARRAY();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"arrays",
                                            		lv_arrays_4_0, 
                                            		"ARRAY");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }


                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1224:3: (this_OREST_5= RULE_OREST )?
                            int alt39=2;
                            int LA39_0 = input.LA(1);

                            if ( (LA39_0==RULE_OREST) ) {
                                alt39=1;
                            }
                            switch (alt39) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1224:4: this_OREST_5= RULE_OREST
                                    {
                                    this_OREST_5=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleStructure2670); 
                                     
                                        newLeafNode(this_OREST_5, grammarAccess.getStructureAccess().getORESTTerminalRuleCall_0_2_1()); 
                                        

                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1228:3: ( (lv_Lists_6_0= ruleTypeList ) )?
                            int alt40=2;
                            int LA40_0 = input.LA(1);

                            if ( (LA40_0==52) ) {
                                alt40=1;
                            }
                            switch (alt40) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1229:1: (lv_Lists_6_0= ruleTypeList )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1229:1: (lv_Lists_6_0= ruleTypeList )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1230:3: lv_Lists_6_0= ruleTypeList
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getListsTypeListParserRuleCall_0_2_2_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleTypeList_in_ruleStructure2692);
                                    lv_Lists_6_0=ruleTypeList();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"Lists",
                                            		lv_Lists_6_0, 
                                            		"TypeList");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1246:3: (otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )? )*
                            loop45:
                            do {
                                int alt45=2;
                                int LA45_0 = input.LA(1);

                                if ( (LA45_0==27) ) {
                                    alt45=1;
                                }


                                switch (alt45) {
                            	case 1 :
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1246:5: otherlv_7= ',' ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) ) (this_OREST_11= RULE_OREST )? ( (lv_Lists_12_0= ruleTypeList ) )?
                            	    {
                            	    otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleStructure2706); 

                            	        	newLeafNode(otherlv_7, grammarAccess.getStructureAccess().getCommaKeyword_0_2_3_0());
                            	        
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1250:1: ( ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? ) | ( (lv_arrays_10_0= ruleARRAY ) ) )
                            	    int alt42=2;
                            	    int LA42_0 = input.LA(1);

                            	    if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_VAR_TYPE)||LA42_0==33||(LA42_0>=43 && LA42_0<=47)) ) {
                            	        alt42=1;
                            	    }
                            	    else if ( (LA42_0==RULE_ARRAYL) ) {
                            	        alt42=2;
                            	    }
                            	    else {
                            	        NoViableAltException nvae =
                            	            new NoViableAltException("", 42, 0, input);

                            	        throw nvae;
                            	    }
                            	    switch (alt42) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1250:2: ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1250:2: ( ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )? )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1250:3: ( (lv_types_8_0= ruleType ) ) (otherlv_9= '()*' )?
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1250:3: ( (lv_types_8_0= ruleType ) )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1251:1: (lv_types_8_0= ruleType )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1251:1: (lv_types_8_0= ruleType )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1252:3: lv_types_8_0= ruleType
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getTypesTypeParserRuleCall_0_2_3_1_0_0_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleType_in_ruleStructure2729);
                            	            lv_types_8_0=ruleType();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"types",
                            	                    		lv_types_8_0, 
                            	                    		"Type");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }

                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1268:2: (otherlv_9= '()*' )?
                            	            int alt41=2;
                            	            int LA41_0 = input.LA(1);

                            	            if ( (LA41_0==38) ) {
                            	                alt41=1;
                            	            }
                            	            switch (alt41) {
                            	                case 1 :
                            	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1268:4: otherlv_9= '()*'
                            	                    {
                            	                    otherlv_9=(Token)match(input,38,FOLLOW_38_in_ruleStructure2742); 

                            	                        	newLeafNode(otherlv_9, grammarAccess.getStructureAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_0_2_3_1_0_1());
                            	                        

                            	                    }
                            	                    break;

                            	            }


                            	            }


                            	            }
                            	            break;
                            	        case 2 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1273:6: ( (lv_arrays_10_0= ruleARRAY ) )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1273:6: ( (lv_arrays_10_0= ruleARRAY ) )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1274:1: (lv_arrays_10_0= ruleARRAY )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1274:1: (lv_arrays_10_0= ruleARRAY )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1275:3: lv_arrays_10_0= ruleARRAY
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getArraysARRAYParserRuleCall_0_2_3_1_1_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleARRAY_in_ruleStructure2772);
                            	            lv_arrays_10_0=ruleARRAY();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"arrays",
                            	                    		lv_arrays_10_0, 
                            	                    		"ARRAY");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }


                            	            }
                            	            break;

                            	    }

                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1291:3: (this_OREST_11= RULE_OREST )?
                            	    int alt43=2;
                            	    int LA43_0 = input.LA(1);

                            	    if ( (LA43_0==RULE_OREST) ) {
                            	        alt43=1;
                            	    }
                            	    switch (alt43) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1291:4: this_OREST_11= RULE_OREST
                            	            {
                            	            this_OREST_11=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleStructure2785); 
                            	             
                            	                newLeafNode(this_OREST_11, grammarAccess.getStructureAccess().getORESTTerminalRuleCall_0_2_3_2()); 
                            	                

                            	            }
                            	            break;

                            	    }

                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1295:3: ( (lv_Lists_12_0= ruleTypeList ) )?
                            	    int alt44=2;
                            	    int LA44_0 = input.LA(1);

                            	    if ( (LA44_0==52) ) {
                            	        alt44=1;
                            	    }
                            	    switch (alt44) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1296:1: (lv_Lists_12_0= ruleTypeList )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1296:1: (lv_Lists_12_0= ruleTypeList )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1297:3: lv_Lists_12_0= ruleTypeList
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getListsTypeListParserRuleCall_0_2_3_3_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleTypeList_in_ruleStructure2807);
                            	            lv_Lists_12_0=ruleTypeList();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"Lists",
                            	                    		lv_Lists_12_0, 
                            	                    		"TypeList");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }
                            	            break;

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop45;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_13=(Token)match(input,36,FOLLOW_36_in_ruleStructure2824); 

                        	newLeafNode(otherlv_13, grammarAccess.getStructureAccess().getRightCurlyBracketKeyword_0_3());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1317:1: (otherlv_14= '*' )*
                    loop47:
                    do {
                        int alt47=2;
                        int LA47_0 = input.LA(1);

                        if ( (LA47_0==39) ) {
                            alt47=1;
                        }


                        switch (alt47) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1317:3: otherlv_14= '*'
                    	    {
                    	    otherlv_14=(Token)match(input,39,FOLLOW_39_in_ruleStructure2837); 

                    	        	newLeafNode(otherlv_14, grammarAccess.getStructureAccess().getAsteriskKeyword_0_4());
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop47;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1322:6: ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1322:6: ( () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>' )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1322:7: () otherlv_16= '<' otherlv_17= '{' ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )? otherlv_27= '}' otherlv_28= '>'
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1322:7: ()
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1323:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getStructureAccess().getStructureAction_1_0(),
                                current);
                        

                    }

                    otherlv_16=(Token)match(input,40,FOLLOW_40_in_ruleStructure2868); 

                        	newLeafNode(otherlv_16, grammarAccess.getStructureAccess().getLessThanSignKeyword_1_1());
                        
                    otherlv_17=(Token)match(input,34,FOLLOW_34_in_ruleStructure2880); 

                        	newLeafNode(otherlv_17, grammarAccess.getStructureAccess().getLeftCurlyBracketKeyword_1_2());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1336:1: ( ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )* )?
                    int alt55=2;
                    int LA55_0 = input.LA(1);

                    if ( (LA55_0==RULE_ARRAYL||(LA55_0>=RULE_INT && LA55_0<=RULE_VAR_TYPE)||LA55_0==33||(LA55_0>=43 && LA55_0<=47)) ) {
                        alt55=1;
                    }
                    switch (alt55) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1336:2: ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) ) (this_OREST_20= RULE_OREST )? ( (lv_Lists_21_0= ruleTypeList ) )? (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )*
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1336:2: ( ( (lv_types_18_0= ruleType ) ) | ( (lv_arrays_19_0= ruleARRAY ) ) )
                            int alt48=2;
                            int LA48_0 = input.LA(1);

                            if ( ((LA48_0>=RULE_INT && LA48_0<=RULE_VAR_TYPE)||LA48_0==33||(LA48_0>=43 && LA48_0<=47)) ) {
                                alt48=1;
                            }
                            else if ( (LA48_0==RULE_ARRAYL) ) {
                                alt48=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 48, 0, input);

                                throw nvae;
                            }
                            switch (alt48) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1336:3: ( (lv_types_18_0= ruleType ) )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1336:3: ( (lv_types_18_0= ruleType ) )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1337:1: (lv_types_18_0= ruleType )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1337:1: (lv_types_18_0= ruleType )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1338:3: lv_types_18_0= ruleType
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getTypesTypeParserRuleCall_1_3_0_0_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleType_in_ruleStructure2903);
                                    lv_types_18_0=ruleType();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"types",
                                            		lv_types_18_0, 
                                            		"Type");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }


                                    }
                                    break;
                                case 2 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1355:6: ( (lv_arrays_19_0= ruleARRAY ) )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1355:6: ( (lv_arrays_19_0= ruleARRAY ) )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1356:1: (lv_arrays_19_0= ruleARRAY )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1356:1: (lv_arrays_19_0= ruleARRAY )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1357:3: lv_arrays_19_0= ruleARRAY
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getArraysARRAYParserRuleCall_1_3_0_1_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleARRAY_in_ruleStructure2930);
                                    lv_arrays_19_0=ruleARRAY();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"arrays",
                                            		lv_arrays_19_0, 
                                            		"ARRAY");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }


                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1373:3: (this_OREST_20= RULE_OREST )?
                            int alt49=2;
                            int LA49_0 = input.LA(1);

                            if ( (LA49_0==RULE_OREST) ) {
                                alt49=1;
                            }
                            switch (alt49) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1373:4: this_OREST_20= RULE_OREST
                                    {
                                    this_OREST_20=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleStructure2943); 
                                     
                                        newLeafNode(this_OREST_20, grammarAccess.getStructureAccess().getORESTTerminalRuleCall_1_3_1()); 
                                        

                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1377:3: ( (lv_Lists_21_0= ruleTypeList ) )?
                            int alt50=2;
                            int LA50_0 = input.LA(1);

                            if ( (LA50_0==52) ) {
                                alt50=1;
                            }
                            switch (alt50) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1378:1: (lv_Lists_21_0= ruleTypeList )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1378:1: (lv_Lists_21_0= ruleTypeList )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1379:3: lv_Lists_21_0= ruleTypeList
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getStructureAccess().getListsTypeListParserRuleCall_1_3_2_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleTypeList_in_ruleStructure2965);
                                    lv_Lists_21_0=ruleTypeList();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getStructureRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"Lists",
                                            		lv_Lists_21_0, 
                                            		"TypeList");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }
                                    break;

                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1395:3: (otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )? )*
                            loop54:
                            do {
                                int alt54=2;
                                int LA54_0 = input.LA(1);

                                if ( (LA54_0==27) ) {
                                    alt54=1;
                                }


                                switch (alt54) {
                            	case 1 :
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1395:5: otherlv_22= ',' ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) ) (this_OREST_25= RULE_OREST )? ( (lv_Lists_26_0= ruleTypeList ) )?
                            	    {
                            	    otherlv_22=(Token)match(input,27,FOLLOW_27_in_ruleStructure2979); 

                            	        	newLeafNode(otherlv_22, grammarAccess.getStructureAccess().getCommaKeyword_1_3_3_0());
                            	        
                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1399:1: ( ( (lv_types_23_0= ruleType ) ) | ( (lv_arrays_24_0= ruleARRAY ) ) )
                            	    int alt51=2;
                            	    int LA51_0 = input.LA(1);

                            	    if ( ((LA51_0>=RULE_INT && LA51_0<=RULE_VAR_TYPE)||LA51_0==33||(LA51_0>=43 && LA51_0<=47)) ) {
                            	        alt51=1;
                            	    }
                            	    else if ( (LA51_0==RULE_ARRAYL) ) {
                            	        alt51=2;
                            	    }
                            	    else {
                            	        NoViableAltException nvae =
                            	            new NoViableAltException("", 51, 0, input);

                            	        throw nvae;
                            	    }
                            	    switch (alt51) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1399:2: ( (lv_types_23_0= ruleType ) )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1399:2: ( (lv_types_23_0= ruleType ) )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1400:1: (lv_types_23_0= ruleType )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1400:1: (lv_types_23_0= ruleType )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1401:3: lv_types_23_0= ruleType
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getTypesTypeParserRuleCall_1_3_3_1_0_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleType_in_ruleStructure3001);
                            	            lv_types_23_0=ruleType();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"types",
                            	                    		lv_types_23_0, 
                            	                    		"Type");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }


                            	            }
                            	            break;
                            	        case 2 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1418:6: ( (lv_arrays_24_0= ruleARRAY ) )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1418:6: ( (lv_arrays_24_0= ruleARRAY ) )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1419:1: (lv_arrays_24_0= ruleARRAY )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1419:1: (lv_arrays_24_0= ruleARRAY )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1420:3: lv_arrays_24_0= ruleARRAY
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getArraysARRAYParserRuleCall_1_3_3_1_1_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleARRAY_in_ruleStructure3028);
                            	            lv_arrays_24_0=ruleARRAY();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"arrays",
                            	                    		lv_arrays_24_0, 
                            	                    		"ARRAY");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }


                            	            }
                            	            break;

                            	    }

                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1436:3: (this_OREST_25= RULE_OREST )?
                            	    int alt52=2;
                            	    int LA52_0 = input.LA(1);

                            	    if ( (LA52_0==RULE_OREST) ) {
                            	        alt52=1;
                            	    }
                            	    switch (alt52) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1436:4: this_OREST_25= RULE_OREST
                            	            {
                            	            this_OREST_25=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleStructure3041); 
                            	             
                            	                newLeafNode(this_OREST_25, grammarAccess.getStructureAccess().getORESTTerminalRuleCall_1_3_3_2()); 
                            	                

                            	            }
                            	            break;

                            	    }

                            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1440:3: ( (lv_Lists_26_0= ruleTypeList ) )?
                            	    int alt53=2;
                            	    int LA53_0 = input.LA(1);

                            	    if ( (LA53_0==52) ) {
                            	        alt53=1;
                            	    }
                            	    switch (alt53) {
                            	        case 1 :
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1441:1: (lv_Lists_26_0= ruleTypeList )
                            	            {
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1441:1: (lv_Lists_26_0= ruleTypeList )
                            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1442:3: lv_Lists_26_0= ruleTypeList
                            	            {
                            	             
                            	            	        newCompositeNode(grammarAccess.getStructureAccess().getListsTypeListParserRuleCall_1_3_3_3_0()); 
                            	            	    
                            	            pushFollow(FOLLOW_ruleTypeList_in_ruleStructure3063);
                            	            lv_Lists_26_0=ruleTypeList();

                            	            state._fsp--;


                            	            	        if (current==null) {
                            	            	            current = createModelElementForParent(grammarAccess.getStructureRule());
                            	            	        }
                            	                   		add(
                            	                   			current, 
                            	                   			"Lists",
                            	                    		lv_Lists_26_0, 
                            	                    		"TypeList");
                            	            	        afterParserOrEnumRuleCall();
                            	            	    

                            	            }


                            	            }
                            	            break;

                            	    }


                            	    }
                            	    break;

                            	default :
                            	    break loop54;
                                }
                            } while (true);


                            }
                            break;

                    }

                    otherlv_27=(Token)match(input,36,FOLLOW_36_in_ruleStructure3080); 

                        	newLeafNode(otherlv_27, grammarAccess.getStructureAccess().getRightCurlyBracketKeyword_1_4());
                        
                    otherlv_28=(Token)match(input,41,FOLLOW_41_in_ruleStructure3092); 

                        	newLeafNode(otherlv_28, grammarAccess.getStructureAccess().getGreaterThanSignKeyword_1_5());
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStructure"


    // $ANTLR start "entryRuleAlias"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1474:1: entryRuleAlias returns [EObject current=null] : iv_ruleAlias= ruleAlias EOF ;
    public final EObject entryRuleAlias() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAlias = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1475:2: (iv_ruleAlias= ruleAlias EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1476:2: iv_ruleAlias= ruleAlias EOF
            {
             newCompositeNode(grammarAccess.getAliasRule()); 
            pushFollow(FOLLOW_ruleAlias_in_entryRuleAlias3129);
            iv_ruleAlias=ruleAlias();

            state._fsp--;

             current =iv_ruleAlias; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAlias3139); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAlias"


    // $ANTLR start "ruleAlias"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1483:1: ruleAlias returns [EObject current=null] : (otherlv_0= 'alias' ( ruleALIAS_LINKAGE )? ( ruleVISIBILITY )? ( (lv_aliastype_3_0= ruleType ) ) ( (lv_aliasvalue_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleType ) ) ) ;
    public final EObject ruleAlias() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        AntlrDatatypeRuleToken lv_aliastype_3_0 = null;

        AntlrDatatypeRuleToken lv_aliasvalue_4_0 = null;

        AntlrDatatypeRuleToken lv_aliasee_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1486:28: ( (otherlv_0= 'alias' ( ruleALIAS_LINKAGE )? ( ruleVISIBILITY )? ( (lv_aliastype_3_0= ruleType ) ) ( (lv_aliasvalue_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1487:1: (otherlv_0= 'alias' ( ruleALIAS_LINKAGE )? ( ruleVISIBILITY )? ( (lv_aliastype_3_0= ruleType ) ) ( (lv_aliasvalue_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1487:1: (otherlv_0= 'alias' ( ruleALIAS_LINKAGE )? ( ruleVISIBILITY )? ( (lv_aliastype_3_0= ruleType ) ) ( (lv_aliasvalue_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1487:3: otherlv_0= 'alias' ( ruleALIAS_LINKAGE )? ( ruleVISIBILITY )? ( (lv_aliastype_3_0= ruleType ) ) ( (lv_aliasvalue_4_0= ruleType ) ) ( (lv_aliasee_5_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,42,FOLLOW_42_in_ruleAlias3176); 

                	newLeafNode(otherlv_0, grammarAccess.getAliasAccess().getAliasKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1491:1: ( ruleALIAS_LINKAGE )?
            int alt57=2;
            int LA57_0 = input.LA(1);

            if ( ((LA57_0>=218 && LA57_0<=221)) ) {
                alt57=1;
            }
            switch (alt57) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1492:5: ruleALIAS_LINKAGE
                    {
                     
                            newCompositeNode(grammarAccess.getAliasAccess().getALIAS_LINKAGEParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleALIAS_LINKAGE_in_ruleAlias3193);
                    ruleALIAS_LINKAGE();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1499:3: ( ruleVISIBILITY )?
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( ((LA58_0>=203 && LA58_0<=205)) ) {
                alt58=1;
            }
            switch (alt58) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1500:5: ruleVISIBILITY
                    {
                     
                            newCompositeNode(grammarAccess.getAliasAccess().getVISIBILITYParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleVISIBILITY_in_ruleAlias3211);
                    ruleVISIBILITY();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1507:3: ( (lv_aliastype_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1508:1: (lv_aliastype_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1508:1: (lv_aliastype_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1509:3: lv_aliastype_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAliasAccess().getAliastypeTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAlias3233);
            lv_aliastype_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAliasRule());
            	        }
                   		set(
                   			current, 
                   			"aliastype",
                    		lv_aliastype_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1525:2: ( (lv_aliasvalue_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1526:1: (lv_aliasvalue_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1526:1: (lv_aliasvalue_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1527:3: lv_aliasvalue_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAliasAccess().getAliasvalueTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAlias3254);
            lv_aliasvalue_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAliasRule());
            	        }
                   		set(
                   			current, 
                   			"aliasvalue",
                    		lv_aliasvalue_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1543:2: ( (lv_aliasee_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1544:1: (lv_aliasee_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1544:1: (lv_aliasee_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1545:3: lv_aliasee_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAliasAccess().getAliaseeTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAlias3275);
            lv_aliasee_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAliasRule());
            	        }
                   		set(
                   			current, 
                   			"aliasee",
                    		lv_aliasee_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAlias"


    // $ANTLR start "entryRulePrimitive"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1569:1: entryRulePrimitive returns [String current=null] : iv_rulePrimitive= rulePrimitive EOF ;
    public final String entryRulePrimitive() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_rulePrimitive = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1570:2: (iv_rulePrimitive= rulePrimitive EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1571:2: iv_rulePrimitive= rulePrimitive EOF
            {
             newCompositeNode(grammarAccess.getPrimitiveRule()); 
            pushFollow(FOLLOW_rulePrimitive_in_entryRulePrimitive3312);
            iv_rulePrimitive=rulePrimitive();

            state._fsp--;

             current =iv_rulePrimitive.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRulePrimitive3323); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrimitive"


    // $ANTLR start "rulePrimitive"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1578:1: rulePrimitive returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'void' | kw= 'null' | kw= 'label' | kw= 'undef' | kw= 'true' | kw= 'false' ) ;
    public final AntlrDatatypeRuleToken rulePrimitive() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1581:28: ( (kw= 'void' | kw= 'null' | kw= 'label' | kw= 'undef' | kw= 'true' | kw= 'false' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1582:1: (kw= 'void' | kw= 'null' | kw= 'label' | kw= 'undef' | kw= 'true' | kw= 'false' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1582:1: (kw= 'void' | kw= 'null' | kw= 'label' | kw= 'undef' | kw= 'true' | kw= 'false' )
            int alt59=6;
            switch ( input.LA(1) ) {
            case 43:
                {
                alt59=1;
                }
                break;
            case 33:
                {
                alt59=2;
                }
                break;
            case 44:
                {
                alt59=3;
                }
                break;
            case 45:
                {
                alt59=4;
                }
                break;
            case 46:
                {
                alt59=5;
                }
                break;
            case 47:
                {
                alt59=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 59, 0, input);

                throw nvae;
            }

            switch (alt59) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1583:2: kw= 'void'
                    {
                    kw=(Token)match(input,43,FOLLOW_43_in_rulePrimitive3361); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getVoidKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1590:2: kw= 'null'
                    {
                    kw=(Token)match(input,33,FOLLOW_33_in_rulePrimitive3380); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getNullKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1597:2: kw= 'label'
                    {
                    kw=(Token)match(input,44,FOLLOW_44_in_rulePrimitive3399); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getLabelKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1604:2: kw= 'undef'
                    {
                    kw=(Token)match(input,45,FOLLOW_45_in_rulePrimitive3418); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getUndefKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1611:2: kw= 'true'
                    {
                    kw=(Token)match(input,46,FOLLOW_46_in_rulePrimitive3437); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getTrueKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1618:2: kw= 'false'
                    {
                    kw=(Token)match(input,47,FOLLOW_47_in_rulePrimitive3456); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getPrimitiveAccess().getFalseKeyword_5()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrimitive"


    // $ANTLR start "entryRuleOpaque"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1631:1: entryRuleOpaque returns [String current=null] : iv_ruleOpaque= ruleOpaque EOF ;
    public final String entryRuleOpaque() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleOpaque = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1632:2: (iv_ruleOpaque= ruleOpaque EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1633:2: iv_ruleOpaque= ruleOpaque EOF
            {
             newCompositeNode(grammarAccess.getOpaqueRule()); 
            pushFollow(FOLLOW_ruleOpaque_in_entryRuleOpaque3497);
            iv_ruleOpaque=ruleOpaque();

            state._fsp--;

             current =iv_ruleOpaque.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOpaque3508); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOpaque"


    // $ANTLR start "ruleOpaque"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1640:1: ruleOpaque returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'opaque' ;
    public final AntlrDatatypeRuleToken ruleOpaque() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1643:28: (kw= 'opaque' )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1645:2: kw= 'opaque'
            {
            kw=(Token)match(input,48,FOLLOW_48_in_ruleOpaque3545); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getOpaqueAccess().getOpaqueKeyword()); 
                

            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOpaque"


    // $ANTLR start "entryRuleFunctionHeader"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1658:1: entryRuleFunctionHeader returns [EObject current=null] : iv_ruleFunctionHeader= ruleFunctionHeader EOF ;
    public final EObject entryRuleFunctionHeader() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunctionHeader = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1659:2: (iv_ruleFunctionHeader= ruleFunctionHeader EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1660:2: iv_ruleFunctionHeader= ruleFunctionHeader EOF
            {
             newCompositeNode(grammarAccess.getFunctionHeaderRule()); 
            pushFollow(FOLLOW_ruleFunctionHeader_in_entryRuleFunctionHeader3584);
            iv_ruleFunctionHeader=ruleFunctionHeader();

            state._fsp--;

             current =iv_ruleFunctionHeader; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionHeader3594); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunctionHeader"


    // $ANTLR start "ruleFunctionHeader"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1667:1: ruleFunctionHeader returns [EObject current=null] : ( (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) ) | (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? ) ) ;
    public final EObject ruleFunctionHeader() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_6_0=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        Token this_STRING_11=null;
        Token otherlv_14=null;
        Token lv_name_20_0=null;
        Token this_OREST_22=null;
        Token otherlv_23=null;
        Token otherlv_25=null;
        Token this_STRING_26=null;
        AntlrDatatypeRuleToken lv_returnType_5_0 = null;

        EObject lv_pl_7_0 = null;

        EObject lv_body_13_0 = null;

        AntlrDatatypeRuleToken lv_returnType_19_0 = null;

        EObject lv_tList_21_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1670:28: ( ( (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) ) | (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1671:1: ( (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) ) | (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1671:1: ( (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) ) | (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? ) )
            int alt77=2;
            int LA77_0 = input.LA(1);

            if ( (LA77_0==49) ) {
                alt77=1;
            }
            else if ( (LA77_0==51) ) {
                alt77=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 77, 0, input);

                throw nvae;
            }
            switch (alt77) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1671:2: (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1671:2: (otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1671:4: otherlv_0= 'define' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_5_0= ruleType ) ) ( (lv_name_6_0= RULE_VAR_TYPE ) ) ( (lv_pl_7_0= ruleParameterList ) ) (otherlv_8= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_10= 'section ' this_STRING_11= RULE_STRING )? ( ruleALIGNMENT )? ( (lv_body_13_0= ruleFunctionBody ) )
                    {
                    otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleFunctionHeader3632); 

                        	newLeafNode(otherlv_0, grammarAccess.getFunctionHeaderAccess().getDefineKeyword_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1675:1: ( ruleLINKAGE )?
                    int alt60=2;
                    int LA60_0 = input.LA(1);

                    if ( ((LA60_0>=206 && LA60_0<=221)) ) {
                        alt60=1;
                    }
                    switch (alt60) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1676:5: ruleLINKAGE
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getLINKAGEParserRuleCall_0_1()); 
                                
                            pushFollow(FOLLOW_ruleLINKAGE_in_ruleFunctionHeader3649);
                            ruleLINKAGE();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1683:3: ( ruleVISIBILITY )?
                    int alt61=2;
                    int LA61_0 = input.LA(1);

                    if ( ((LA61_0>=203 && LA61_0<=205)) ) {
                        alt61=1;
                    }
                    switch (alt61) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1684:5: ruleVISIBILITY
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getVISIBILITYParserRuleCall_0_2()); 
                                
                            pushFollow(FOLLOW_ruleVISIBILITY_in_ruleFunctionHeader3667);
                            ruleVISIBILITY();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1691:3: ( ruleCallingConv )?
                    int alt62=2;
                    int LA62_0 = input.LA(1);

                    if ( ((LA62_0>=100 && LA62_0<=114)) ) {
                        alt62=1;
                    }
                    switch (alt62) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1692:5: ruleCallingConv
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getCallingConvParserRuleCall_0_3()); 
                                
                            pushFollow(FOLLOW_ruleCallingConv_in_ruleFunctionHeader3685);
                            ruleCallingConv();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1699:3: ( ruleRETURN_ATTRIBUTES )?
                    int alt63=2;
                    int LA63_0 = input.LA(1);

                    if ( ((LA63_0>=91 && LA63_0<=98)) ) {
                        alt63=1;
                    }
                    switch (alt63) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1700:5: ruleRETURN_ATTRIBUTES
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getRETURN_ATTRIBUTESParserRuleCall_0_4()); 
                                
                            pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleFunctionHeader3703);
                            ruleRETURN_ATTRIBUTES();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1707:3: ( (lv_returnType_5_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1708:1: (lv_returnType_5_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1708:1: (lv_returnType_5_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1709:3: lv_returnType_5_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getReturnTypeTypeParserRuleCall_0_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleFunctionHeader3725);
                    lv_returnType_5_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		set(
                           			current, 
                           			"returnType",
                            		lv_returnType_5_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1725:2: ( (lv_name_6_0= RULE_VAR_TYPE ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1726:1: (lv_name_6_0= RULE_VAR_TYPE )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1726:1: (lv_name_6_0= RULE_VAR_TYPE )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1727:3: lv_name_6_0= RULE_VAR_TYPE
                    {
                    lv_name_6_0=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleFunctionHeader3742); 

                    			newLeafNode(lv_name_6_0, grammarAccess.getFunctionHeaderAccess().getNameVAR_TYPETerminalRuleCall_0_6_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_6_0, 
                            		"VAR_TYPE");
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1743:2: ( (lv_pl_7_0= ruleParameterList ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1744:1: (lv_pl_7_0= ruleParameterList )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1744:1: (lv_pl_7_0= ruleParameterList )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1745:3: lv_pl_7_0= ruleParameterList
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getPlParameterListParserRuleCall_0_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleParameterList_in_ruleFunctionHeader3768);
                    lv_pl_7_0=ruleParameterList();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		set(
                           			current, 
                           			"pl",
                            		lv_pl_7_0, 
                            		"ParameterList");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1761:2: (otherlv_8= 'unnamed_addr' )?
                    int alt64=2;
                    int LA64_0 = input.LA(1);

                    if ( (LA64_0==29) ) {
                        alt64=1;
                    }
                    switch (alt64) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1761:4: otherlv_8= 'unnamed_addr'
                            {
                            otherlv_8=(Token)match(input,29,FOLLOW_29_in_ruleFunctionHeader3781); 

                                	newLeafNode(otherlv_8, grammarAccess.getFunctionHeaderAccess().getUnnamed_addrKeyword_0_8());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1765:3: ( ruleFUNCTION_ATTRIBUTES )*
                    loop65:
                    do {
                        int alt65=2;
                        int LA65_0 = input.LA(1);

                        if ( ((LA65_0>=115 && LA65_0<=132)) ) {
                            alt65=1;
                        }


                        switch (alt65) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1766:5: ruleFUNCTION_ATTRIBUTES
                    	    {
                    	     
                    	            newCompositeNode(grammarAccess.getFunctionHeaderAccess().getFUNCTION_ATTRIBUTESParserRuleCall_0_9()); 
                    	        
                    	    pushFollow(FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleFunctionHeader3800);
                    	    ruleFUNCTION_ATTRIBUTES();

                    	    state._fsp--;

                    	     
                    	            afterParserOrEnumRuleCall();
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop65;
                        }
                    } while (true);

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1773:3: (otherlv_10= 'section ' this_STRING_11= RULE_STRING )?
                    int alt66=2;
                    int LA66_0 = input.LA(1);

                    if ( (LA66_0==50) ) {
                        alt66=1;
                    }
                    switch (alt66) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1773:5: otherlv_10= 'section ' this_STRING_11= RULE_STRING
                            {
                            otherlv_10=(Token)match(input,50,FOLLOW_50_in_ruleFunctionHeader3814); 

                                	newLeafNode(otherlv_10, grammarAccess.getFunctionHeaderAccess().getSectionKeyword_0_10_0());
                                
                            this_STRING_11=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFunctionHeader3825); 
                             
                                newLeafNode(this_STRING_11, grammarAccess.getFunctionHeaderAccess().getSTRINGTerminalRuleCall_0_10_1()); 
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1781:3: ( ruleALIGNMENT )?
                    int alt67=2;
                    int LA67_0 = input.LA(1);

                    if ( (LA67_0==87) ) {
                        alt67=1;
                    }
                    switch (alt67) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1782:5: ruleALIGNMENT
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getALIGNMENTParserRuleCall_0_11()); 
                                
                            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleFunctionHeader3843);
                            ruleALIGNMENT();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1789:3: ( (lv_body_13_0= ruleFunctionBody ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1790:1: (lv_body_13_0= ruleFunctionBody )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1790:1: (lv_body_13_0= ruleFunctionBody )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1791:3: lv_body_13_0= ruleFunctionBody
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getBodyFunctionBodyParserRuleCall_0_12_0()); 
                    	    
                    pushFollow(FOLLOW_ruleFunctionBody_in_ruleFunctionHeader3865);
                    lv_body_13_0=ruleFunctionBody();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		set(
                           			current, 
                           			"body",
                            		lv_body_13_0, 
                            		"FunctionBody");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1808:6: (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1808:6: (otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1808:8: otherlv_14= 'declare' ( ruleLINKAGE )? ( ruleVISIBILITY )? ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_returnType_19_0= ruleType ) ) ( (lv_name_20_0= RULE_VAR_TYPE ) ) ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST ) (otherlv_23= 'unnamed_addr' )? ( ruleFUNCTION_ATTRIBUTES )* (otherlv_25= 'section ' this_STRING_26= RULE_STRING )? ( ruleALIGNMENT )?
                    {
                    otherlv_14=(Token)match(input,51,FOLLOW_51_in_ruleFunctionHeader3885); 

                        	newLeafNode(otherlv_14, grammarAccess.getFunctionHeaderAccess().getDeclareKeyword_1_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1812:1: ( ruleLINKAGE )?
                    int alt68=2;
                    int LA68_0 = input.LA(1);

                    if ( ((LA68_0>=206 && LA68_0<=221)) ) {
                        alt68=1;
                    }
                    switch (alt68) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1813:5: ruleLINKAGE
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getLINKAGEParserRuleCall_1_1()); 
                                
                            pushFollow(FOLLOW_ruleLINKAGE_in_ruleFunctionHeader3902);
                            ruleLINKAGE();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1820:3: ( ruleVISIBILITY )?
                    int alt69=2;
                    int LA69_0 = input.LA(1);

                    if ( ((LA69_0>=203 && LA69_0<=205)) ) {
                        alt69=1;
                    }
                    switch (alt69) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1821:5: ruleVISIBILITY
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getVISIBILITYParserRuleCall_1_2()); 
                                
                            pushFollow(FOLLOW_ruleVISIBILITY_in_ruleFunctionHeader3920);
                            ruleVISIBILITY();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1828:3: ( ruleCallingConv )?
                    int alt70=2;
                    int LA70_0 = input.LA(1);

                    if ( ((LA70_0>=100 && LA70_0<=114)) ) {
                        alt70=1;
                    }
                    switch (alt70) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1829:5: ruleCallingConv
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getCallingConvParserRuleCall_1_3()); 
                                
                            pushFollow(FOLLOW_ruleCallingConv_in_ruleFunctionHeader3938);
                            ruleCallingConv();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1836:3: ( ruleRETURN_ATTRIBUTES )?
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( ((LA71_0>=91 && LA71_0<=98)) ) {
                        alt71=1;
                    }
                    switch (alt71) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1837:5: ruleRETURN_ATTRIBUTES
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getRETURN_ATTRIBUTESParserRuleCall_1_4()); 
                                
                            pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleFunctionHeader3956);
                            ruleRETURN_ATTRIBUTES();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1844:3: ( (lv_returnType_19_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1845:1: (lv_returnType_19_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1845:1: (lv_returnType_19_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1846:3: lv_returnType_19_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getReturnTypeTypeParserRuleCall_1_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleFunctionHeader3978);
                    lv_returnType_19_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		set(
                           			current, 
                           			"returnType",
                            		lv_returnType_19_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1862:2: ( (lv_name_20_0= RULE_VAR_TYPE ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1863:1: (lv_name_20_0= RULE_VAR_TYPE )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1863:1: (lv_name_20_0= RULE_VAR_TYPE )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1864:3: lv_name_20_0= RULE_VAR_TYPE
                    {
                    lv_name_20_0=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleFunctionHeader3995); 

                    			newLeafNode(lv_name_20_0, grammarAccess.getFunctionHeaderAccess().getNameVAR_TYPETerminalRuleCall_1_6_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getFunctionHeaderRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"name",
                            		lv_name_20_0, 
                            		"VAR_TYPE");
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1880:2: ( ( (lv_tList_21_0= ruleTypeList ) ) | this_OREST_22= RULE_OREST )
                    int alt72=2;
                    int LA72_0 = input.LA(1);

                    if ( (LA72_0==52) ) {
                        alt72=1;
                    }
                    else if ( (LA72_0==RULE_OREST) ) {
                        alt72=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 72, 0, input);

                        throw nvae;
                    }
                    switch (alt72) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1880:3: ( (lv_tList_21_0= ruleTypeList ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1880:3: ( (lv_tList_21_0= ruleTypeList ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1881:1: (lv_tList_21_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1881:1: (lv_tList_21_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1882:3: lv_tList_21_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getFunctionHeaderAccess().getTListTypeListParserRuleCall_1_7_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleFunctionHeader4022);
                            lv_tList_21_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getFunctionHeaderRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"tList",
                                    		lv_tList_21_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1899:6: this_OREST_22= RULE_OREST
                            {
                            this_OREST_22=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleFunctionHeader4039); 
                             
                                newLeafNode(this_OREST_22, grammarAccess.getFunctionHeaderAccess().getORESTTerminalRuleCall_1_7_1()); 
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1903:2: (otherlv_23= 'unnamed_addr' )?
                    int alt73=2;
                    int LA73_0 = input.LA(1);

                    if ( (LA73_0==29) ) {
                        alt73=1;
                    }
                    switch (alt73) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1903:4: otherlv_23= 'unnamed_addr'
                            {
                            otherlv_23=(Token)match(input,29,FOLLOW_29_in_ruleFunctionHeader4052); 

                                	newLeafNode(otherlv_23, grammarAccess.getFunctionHeaderAccess().getUnnamed_addrKeyword_1_8());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1907:3: ( ruleFUNCTION_ATTRIBUTES )*
                    loop74:
                    do {
                        int alt74=2;
                        int LA74_0 = input.LA(1);

                        if ( ((LA74_0>=115 && LA74_0<=132)) ) {
                            alt74=1;
                        }


                        switch (alt74) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1908:5: ruleFUNCTION_ATTRIBUTES
                    	    {
                    	     
                    	            newCompositeNode(grammarAccess.getFunctionHeaderAccess().getFUNCTION_ATTRIBUTESParserRuleCall_1_9()); 
                    	        
                    	    pushFollow(FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleFunctionHeader4071);
                    	    ruleFUNCTION_ATTRIBUTES();

                    	    state._fsp--;

                    	     
                    	            afterParserOrEnumRuleCall();
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop74;
                        }
                    } while (true);

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1915:3: (otherlv_25= 'section ' this_STRING_26= RULE_STRING )?
                    int alt75=2;
                    int LA75_0 = input.LA(1);

                    if ( (LA75_0==50) ) {
                        alt75=1;
                    }
                    switch (alt75) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1915:5: otherlv_25= 'section ' this_STRING_26= RULE_STRING
                            {
                            otherlv_25=(Token)match(input,50,FOLLOW_50_in_ruleFunctionHeader4085); 

                                	newLeafNode(otherlv_25, grammarAccess.getFunctionHeaderAccess().getSectionKeyword_1_10_0());
                                
                            this_STRING_26=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleFunctionHeader4096); 
                             
                                newLeafNode(this_STRING_26, grammarAccess.getFunctionHeaderAccess().getSTRINGTerminalRuleCall_1_10_1()); 
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1923:3: ( ruleALIGNMENT )?
                    int alt76=2;
                    int LA76_0 = input.LA(1);

                    if ( (LA76_0==87) ) {
                        alt76=1;
                    }
                    switch (alt76) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1924:5: ruleALIGNMENT
                            {
                             
                                    newCompositeNode(grammarAccess.getFunctionHeaderAccess().getALIGNMENTParserRuleCall_1_11()); 
                                
                            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleFunctionHeader4114);
                            ruleALIGNMENT();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunctionHeader"


    // $ANTLR start "entryRuleParameterList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1939:1: entryRuleParameterList returns [EObject current=null] : iv_ruleParameterList= ruleParameterList EOF ;
    public final EObject entryRuleParameterList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleParameterList = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1940:2: (iv_ruleParameterList= ruleParameterList EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1941:2: iv_ruleParameterList= ruleParameterList EOF
            {
             newCompositeNode(grammarAccess.getParameterListRule()); 
            pushFollow(FOLLOW_ruleParameterList_in_entryRuleParameterList4152);
            iv_ruleParameterList=ruleParameterList();

            state._fsp--;

             current =iv_ruleParameterList; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleParameterList4162); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleParameterList"


    // $ANTLR start "ruleParameterList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1948:1: ruleParameterList returns [EObject current=null] : ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )? otherlv_24= ')' ) ;
    public final EObject ruleParameterList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_21=null;
        Token otherlv_23=null;
        Token otherlv_24=null;
        AntlrDatatypeRuleToken lv_types_2_0 = null;

        EObject lv_Lists_3_0 = null;

        AntlrDatatypeRuleToken lv_alignname_6_0 = null;

        AntlrDatatypeRuleToken lv_variables_8_0 = null;

        EObject lv_op_9_0 = null;

        EObject lv_op_11_0 = null;

        AntlrDatatypeRuleToken lv_types_14_0 = null;

        EObject lv_Lists_15_0 = null;

        AntlrDatatypeRuleToken lv_alignname_18_0 = null;

        AntlrDatatypeRuleToken lv_variables_19_0 = null;

        EObject lv_op_20_0 = null;

        EObject lv_op_22_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1951:28: ( ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )? otherlv_24= ')' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1952:1: ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )? otherlv_24= ')' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1952:1: ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )? otherlv_24= ')' )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1952:2: () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )? otherlv_24= ')'
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1952:2: ()
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1953:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getParameterListAccess().getParameterListAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,52,FOLLOW_52_in_ruleParameterList4208); 

                	newLeafNode(otherlv_1, grammarAccess.getParameterListAccess().getLeftParenthesisKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1962:1: ( ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )* )?
            int alt90=2;
            int LA90_0 = input.LA(1);

            if ( ((LA90_0>=RULE_INT && LA90_0<=RULE_VAR_TYPE)||LA90_0==33||(LA90_0>=43 && LA90_0<=47)) ) {
                alt90=1;
            }
            switch (alt90) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1962:2: ( (lv_types_2_0= ruleType ) ) ( (lv_Lists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) ) (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )*
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1962:2: ( (lv_types_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1963:1: (lv_types_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1963:1: (lv_types_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1964:3: lv_types_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getParameterListAccess().getTypesTypeParserRuleCall_2_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleParameterList4230);
                    lv_types_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	        }
                           		add(
                           			current, 
                           			"types",
                            		lv_types_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1980:2: ( (lv_Lists_3_0= ruleTypeList ) )?
                    int alt78=2;
                    int LA78_0 = input.LA(1);

                    if ( (LA78_0==52) ) {
                        alt78=1;
                    }
                    switch (alt78) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1981:1: (lv_Lists_3_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1981:1: (lv_Lists_3_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1982:3: lv_Lists_3_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getParameterListAccess().getListsTypeListParserRuleCall_2_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleParameterList4251);
                            lv_Lists_3_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"Lists",
                                    		lv_Lists_3_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1998:3: ( ruleRETURN_ATTRIBUTES )*
                    loop79:
                    do {
                        int alt79=2;
                        int LA79_0 = input.LA(1);

                        if ( ((LA79_0>=91 && LA79_0<=98)) ) {
                            alt79=1;
                        }


                        switch (alt79) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:1999:5: ruleRETURN_ATTRIBUTES
                    	    {
                    	     
                    	            newCompositeNode(grammarAccess.getParameterListAccess().getRETURN_ATTRIBUTESParserRuleCall_2_2()); 
                    	        
                    	    pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleParameterList4269);
                    	    ruleRETURN_ATTRIBUTES();

                    	    state._fsp--;

                    	     
                    	            afterParserOrEnumRuleCall();
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop79;
                        }
                    } while (true);

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2006:3: ( ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2006:4: ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )? ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2006:4: ( ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ',' )?
                    int alt80=2;
                    int LA80_0 = input.LA(1);

                    if ( (LA80_0==87) ) {
                        alt80=1;
                    }
                    switch (alt80) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2007:5: ruleALIGNMENT ( (lv_alignname_6_0= ruleType ) ) otherlv_7= ','
                            {
                             
                                    newCompositeNode(grammarAccess.getParameterListAccess().getALIGNMENTParserRuleCall_2_3_0_0()); 
                                
                            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleParameterList4288);
                            ruleALIGNMENT();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2014:1: ( (lv_alignname_6_0= ruleType ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2015:1: (lv_alignname_6_0= ruleType )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2015:1: (lv_alignname_6_0= ruleType )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2016:3: lv_alignname_6_0= ruleType
                            {
                             
                            	        newCompositeNode(grammarAccess.getParameterListAccess().getAlignnameTypeParserRuleCall_2_3_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleType_in_ruleParameterList4308);
                            lv_alignname_6_0=ruleType();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"alignname",
                                    		lv_alignname_6_0, 
                                    		"Type");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleParameterList4320); 

                                	newLeafNode(otherlv_7, grammarAccess.getParameterListAccess().getCommaKeyword_2_3_0_2());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2036:3: ( ( (lv_variables_8_0= ruleType ) ) | ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? ) | ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' ) )
                    int alt82=3;
                    switch ( input.LA(1) ) {
                    case RULE_INT:
                    case RULE_INTEGER:
                    case RULE_VAR_TYPE:
                    case 33:
                    case 43:
                    case 44:
                    case 45:
                    case 46:
                    case 47:
                        {
                        alt82=1;
                        }
                        break;
                    case 144:
                    case 145:
                    case 146:
                    case 147:
                    case 148:
                    case 149:
                    case 150:
                    case 151:
                    case 152:
                    case 153:
                    case 154:
                    case 155:
                        {
                        alt82=2;
                        }
                        break;
                    case 60:
                        {
                        alt82=3;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 82, 0, input);

                        throw nvae;
                    }

                    switch (alt82) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2036:4: ( (lv_variables_8_0= ruleType ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2036:4: ( (lv_variables_8_0= ruleType ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2037:1: (lv_variables_8_0= ruleType )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2037:1: (lv_variables_8_0= ruleType )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2038:3: lv_variables_8_0= ruleType
                            {
                             
                            	        newCompositeNode(grammarAccess.getParameterListAccess().getVariablesTypeParserRuleCall_2_3_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleType_in_ruleParameterList4344);
                            lv_variables_8_0=ruleType();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"variables",
                                    		lv_variables_8_0, 
                                    		"Type");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2055:6: ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2055:6: ( ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )? )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2055:7: ( (lv_op_9_0= ruleCast ) ) (otherlv_10= ')' )?
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2055:7: ( (lv_op_9_0= ruleCast ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2056:1: (lv_op_9_0= ruleCast )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2056:1: (lv_op_9_0= ruleCast )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2057:3: lv_op_9_0= ruleCast
                            {
                             
                            	        newCompositeNode(grammarAccess.getParameterListAccess().getOpCastParserRuleCall_2_3_1_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleCast_in_ruleParameterList4372);
                            lv_op_9_0=ruleCast();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"op",
                                    		lv_op_9_0, 
                                    		"Cast");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2073:2: (otherlv_10= ')' )?
                            int alt81=2;
                            int LA81_0 = input.LA(1);

                            if ( (LA81_0==35) ) {
                                int LA81_1 = input.LA(2);

                                if ( (LA81_1==27||LA81_1==35) ) {
                                    alt81=1;
                                }
                            }
                            switch (alt81) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2073:4: otherlv_10= ')'
                                    {
                                    otherlv_10=(Token)match(input,35,FOLLOW_35_in_ruleParameterList4385); 

                                        	newLeafNode(otherlv_10, grammarAccess.getParameterListAccess().getRightParenthesisKeyword_2_3_1_1_1());
                                        

                                    }
                                    break;

                            }


                            }


                            }
                            break;
                        case 3 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2078:6: ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2078:6: ( ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')' )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2078:7: ( (lv_op_11_0= ruleGetElementPtr ) ) otherlv_12= ')'
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2078:7: ( (lv_op_11_0= ruleGetElementPtr ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2079:1: (lv_op_11_0= ruleGetElementPtr )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2079:1: (lv_op_11_0= ruleGetElementPtr )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2080:3: lv_op_11_0= ruleGetElementPtr
                            {
                             
                            	        newCompositeNode(grammarAccess.getParameterListAccess().getOpGetElementPtrParserRuleCall_2_3_1_2_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleGetElementPtr_in_ruleParameterList4416);
                            lv_op_11_0=ruleGetElementPtr();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"op",
                                    		lv_op_11_0, 
                                    		"GetElementPtr");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            otherlv_12=(Token)match(input,35,FOLLOW_35_in_ruleParameterList4428); 

                                	newLeafNode(otherlv_12, grammarAccess.getParameterListAccess().getRightParenthesisKeyword_2_3_1_2_1());
                                

                            }


                            }
                            break;

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2100:4: (otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) ) )*
                    loop89:
                    do {
                        int alt89=2;
                        int LA89_0 = input.LA(1);

                        if ( (LA89_0==27) ) {
                            alt89=1;
                        }


                        switch (alt89) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2100:6: otherlv_13= ',' ( (lv_types_14_0= ruleType ) ) ( (lv_Lists_15_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )* ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) )
                    	    {
                    	    otherlv_13=(Token)match(input,27,FOLLOW_27_in_ruleParameterList4444); 

                    	        	newLeafNode(otherlv_13, grammarAccess.getParameterListAccess().getCommaKeyword_2_4_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2104:1: ( (lv_types_14_0= ruleType ) )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2105:1: (lv_types_14_0= ruleType )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2105:1: (lv_types_14_0= ruleType )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2106:3: lv_types_14_0= ruleType
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getParameterListAccess().getTypesTypeParserRuleCall_2_4_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleType_in_ruleParameterList4465);
                    	    lv_types_14_0=ruleType();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"types",
                    	            		lv_types_14_0, 
                    	            		"Type");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2122:2: ( (lv_Lists_15_0= ruleTypeList ) )?
                    	    int alt83=2;
                    	    int LA83_0 = input.LA(1);

                    	    if ( (LA83_0==52) ) {
                    	        alt83=1;
                    	    }
                    	    switch (alt83) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2123:1: (lv_Lists_15_0= ruleTypeList )
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2123:1: (lv_Lists_15_0= ruleTypeList )
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2124:3: lv_Lists_15_0= ruleTypeList
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getParameterListAccess().getListsTypeListParserRuleCall_2_4_2_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleTypeList_in_ruleParameterList4486);
                    	            lv_Lists_15_0=ruleTypeList();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"Lists",
                    	                    		lv_Lists_15_0, 
                    	                    		"TypeList");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }
                    	            break;

                    	    }

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2140:3: ( ruleRETURN_ATTRIBUTES )*
                    	    loop84:
                    	    do {
                    	        int alt84=2;
                    	        int LA84_0 = input.LA(1);

                    	        if ( ((LA84_0>=91 && LA84_0<=98)) ) {
                    	            alt84=1;
                    	        }


                    	        switch (alt84) {
                    	    	case 1 :
                    	    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2141:5: ruleRETURN_ATTRIBUTES
                    	    	    {
                    	    	     
                    	    	            newCompositeNode(grammarAccess.getParameterListAccess().getRETURN_ATTRIBUTESParserRuleCall_2_4_3()); 
                    	    	        
                    	    	    pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleParameterList4504);
                    	    	    ruleRETURN_ATTRIBUTES();

                    	    	    state._fsp--;

                    	    	     
                    	    	            afterParserOrEnumRuleCall();
                    	    	        

                    	    	    }
                    	    	    break;

                    	    	default :
                    	    	    break loop84;
                    	        }
                    	    } while (true);

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2148:3: ( ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )? | ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) ) )
                    	    int alt88=2;
                    	    int LA88_0 = input.LA(1);

                    	    if ( (LA88_0==27||LA88_0==35||LA88_0==87) ) {
                    	        alt88=1;
                    	    }
                    	    else if ( ((LA88_0>=RULE_INT && LA88_0<=RULE_VAR_TYPE)||LA88_0==33||(LA88_0>=43 && LA88_0<=47)||LA88_0==60||(LA88_0>=144 && LA88_0<=155)) ) {
                    	        alt88=2;
                    	    }
                    	    else {
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 88, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt88) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2148:4: ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )?
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2148:4: ( ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) ) )?
                    	            int alt85=2;
                    	            int LA85_0 = input.LA(1);

                    	            if ( (LA85_0==87) ) {
                    	                alt85=1;
                    	            }
                    	            switch (alt85) {
                    	                case 1 :
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2149:5: ruleALIGNMENT ( (lv_alignname_18_0= ruleType ) )
                    	                    {
                    	                     
                    	                            newCompositeNode(grammarAccess.getParameterListAccess().getALIGNMENTParserRuleCall_2_4_4_0_0()); 
                    	                        
                    	                    pushFollow(FOLLOW_ruleALIGNMENT_in_ruleParameterList4523);
                    	                    ruleALIGNMENT();

                    	                    state._fsp--;

                    	                     
                    	                            afterParserOrEnumRuleCall();
                    	                        
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2156:1: ( (lv_alignname_18_0= ruleType ) )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2157:1: (lv_alignname_18_0= ruleType )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2157:1: (lv_alignname_18_0= ruleType )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2158:3: lv_alignname_18_0= ruleType
                    	                    {
                    	                     
                    	                    	        newCompositeNode(grammarAccess.getParameterListAccess().getAlignnameTypeParserRuleCall_2_4_4_0_1_0()); 
                    	                    	    
                    	                    pushFollow(FOLLOW_ruleType_in_ruleParameterList4543);
                    	                    lv_alignname_18_0=ruleType();

                    	                    state._fsp--;


                    	                    	        if (current==null) {
                    	                    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	                    	        }
                    	                           		add(
                    	                           			current, 
                    	                           			"alignname",
                    	                            		lv_alignname_18_0, 
                    	                            		"Type");
                    	                    	        afterParserOrEnumRuleCall();
                    	                    	    

                    	                    }


                    	                    }


                    	                    }
                    	                    break;

                    	            }


                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2175:6: ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) )
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2175:6: ( ( (lv_variables_19_0= ruleType ) ) | ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? ) | ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' ) )
                    	            int alt87=3;
                    	            switch ( input.LA(1) ) {
                    	            case RULE_INT:
                    	            case RULE_INTEGER:
                    	            case RULE_VAR_TYPE:
                    	            case 33:
                    	            case 43:
                    	            case 44:
                    	            case 45:
                    	            case 46:
                    	            case 47:
                    	                {
                    	                alt87=1;
                    	                }
                    	                break;
                    	            case 144:
                    	            case 145:
                    	            case 146:
                    	            case 147:
                    	            case 148:
                    	            case 149:
                    	            case 150:
                    	            case 151:
                    	            case 152:
                    	            case 153:
                    	            case 154:
                    	            case 155:
                    	                {
                    	                alt87=2;
                    	                }
                    	                break;
                    	            case 60:
                    	                {
                    	                alt87=3;
                    	                }
                    	                break;
                    	            default:
                    	                NoViableAltException nvae =
                    	                    new NoViableAltException("", 87, 0, input);

                    	                throw nvae;
                    	            }

                    	            switch (alt87) {
                    	                case 1 :
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2175:7: ( (lv_variables_19_0= ruleType ) )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2175:7: ( (lv_variables_19_0= ruleType ) )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2176:1: (lv_variables_19_0= ruleType )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2176:1: (lv_variables_19_0= ruleType )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2177:3: lv_variables_19_0= ruleType
                    	                    {
                    	                     
                    	                    	        newCompositeNode(grammarAccess.getParameterListAccess().getVariablesTypeParserRuleCall_2_4_4_1_0_0()); 
                    	                    	    
                    	                    pushFollow(FOLLOW_ruleType_in_ruleParameterList4573);
                    	                    lv_variables_19_0=ruleType();

                    	                    state._fsp--;


                    	                    	        if (current==null) {
                    	                    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	                    	        }
                    	                           		add(
                    	                           			current, 
                    	                           			"variables",
                    	                            		lv_variables_19_0, 
                    	                            		"Type");
                    	                    	        afterParserOrEnumRuleCall();
                    	                    	    

                    	                    }


                    	                    }


                    	                    }
                    	                    break;
                    	                case 2 :
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2194:6: ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2194:6: ( ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )? )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2194:7: ( (lv_op_20_0= ruleCast ) ) (otherlv_21= ')' )?
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2194:7: ( (lv_op_20_0= ruleCast ) )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2195:1: (lv_op_20_0= ruleCast )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2195:1: (lv_op_20_0= ruleCast )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2196:3: lv_op_20_0= ruleCast
                    	                    {
                    	                     
                    	                    	        newCompositeNode(grammarAccess.getParameterListAccess().getOpCastParserRuleCall_2_4_4_1_1_0_0()); 
                    	                    	    
                    	                    pushFollow(FOLLOW_ruleCast_in_ruleParameterList4601);
                    	                    lv_op_20_0=ruleCast();

                    	                    state._fsp--;


                    	                    	        if (current==null) {
                    	                    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	                    	        }
                    	                           		add(
                    	                           			current, 
                    	                           			"op",
                    	                            		lv_op_20_0, 
                    	                            		"Cast");
                    	                    	        afterParserOrEnumRuleCall();
                    	                    	    

                    	                    }


                    	                    }

                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2212:2: (otherlv_21= ')' )?
                    	                    int alt86=2;
                    	                    int LA86_0 = input.LA(1);

                    	                    if ( (LA86_0==35) ) {
                    	                        int LA86_1 = input.LA(2);

                    	                        if ( (LA86_1==27||LA86_1==35) ) {
                    	                            alt86=1;
                    	                        }
                    	                    }
                    	                    switch (alt86) {
                    	                        case 1 :
                    	                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2212:4: otherlv_21= ')'
                    	                            {
                    	                            otherlv_21=(Token)match(input,35,FOLLOW_35_in_ruleParameterList4614); 

                    	                                	newLeafNode(otherlv_21, grammarAccess.getParameterListAccess().getRightParenthesisKeyword_2_4_4_1_1_1());
                    	                                

                    	                            }
                    	                            break;

                    	                    }


                    	                    }


                    	                    }
                    	                    break;
                    	                case 3 :
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2217:6: ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2217:6: ( ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')' )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2217:7: ( (lv_op_22_0= ruleGetElementPtr ) ) otherlv_23= ')'
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2217:7: ( (lv_op_22_0= ruleGetElementPtr ) )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2218:1: (lv_op_22_0= ruleGetElementPtr )
                    	                    {
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2218:1: (lv_op_22_0= ruleGetElementPtr )
                    	                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2219:3: lv_op_22_0= ruleGetElementPtr
                    	                    {
                    	                     
                    	                    	        newCompositeNode(grammarAccess.getParameterListAccess().getOpGetElementPtrParserRuleCall_2_4_4_1_2_0_0()); 
                    	                    	    
                    	                    pushFollow(FOLLOW_ruleGetElementPtr_in_ruleParameterList4645);
                    	                    lv_op_22_0=ruleGetElementPtr();

                    	                    state._fsp--;


                    	                    	        if (current==null) {
                    	                    	            current = createModelElementForParent(grammarAccess.getParameterListRule());
                    	                    	        }
                    	                           		add(
                    	                           			current, 
                    	                           			"op",
                    	                            		lv_op_22_0, 
                    	                            		"GetElementPtr");
                    	                    	        afterParserOrEnumRuleCall();
                    	                    	    

                    	                    }


                    	                    }

                    	                    otherlv_23=(Token)match(input,35,FOLLOW_35_in_ruleParameterList4657); 

                    	                        	newLeafNode(otherlv_23, grammarAccess.getParameterListAccess().getRightParenthesisKeyword_2_4_4_1_2_1());
                    	                        

                    	                    }


                    	                    }
                    	                    break;

                    	            }


                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop89;
                        }
                    } while (true);


                    }
                    break;

            }

            otherlv_24=(Token)match(input,35,FOLLOW_35_in_ruleParameterList4676); 

                	newLeafNode(otherlv_24, grammarAccess.getParameterListAccess().getRightParenthesisKeyword_3());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleParameterList"


    // $ANTLR start "entryRuleFunctionBody"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2251:1: entryRuleFunctionBody returns [EObject current=null] : iv_ruleFunctionBody= ruleFunctionBody EOF ;
    public final EObject entryRuleFunctionBody() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFunctionBody = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2252:2: (iv_ruleFunctionBody= ruleFunctionBody EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2253:2: iv_ruleFunctionBody= ruleFunctionBody EOF
            {
             newCompositeNode(grammarAccess.getFunctionBodyRule()); 
            pushFollow(FOLLOW_ruleFunctionBody_in_entryRuleFunctionBody4712);
            iv_ruleFunctionBody=ruleFunctionBody();

            state._fsp--;

             current =iv_ruleFunctionBody; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFunctionBody4722); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFunctionBody"


    // $ANTLR start "ruleFunctionBody"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2260:1: ruleFunctionBody returns [EObject current=null] : ( ( (lv_meta_0_0= ruleMetadataValue ) )* otherlv_1= '{' ( (lv_blocks_2_0= ruleBasicBlock ) )+ otherlv_3= '}' ( (lv_meta_4_0= ruleMetadataValue ) )* ) ;
    public final EObject ruleFunctionBody() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_meta_0_0 = null;

        EObject lv_blocks_2_0 = null;

        AntlrDatatypeRuleToken lv_meta_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2263:28: ( ( ( (lv_meta_0_0= ruleMetadataValue ) )* otherlv_1= '{' ( (lv_blocks_2_0= ruleBasicBlock ) )+ otherlv_3= '}' ( (lv_meta_4_0= ruleMetadataValue ) )* ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2264:1: ( ( (lv_meta_0_0= ruleMetadataValue ) )* otherlv_1= '{' ( (lv_blocks_2_0= ruleBasicBlock ) )+ otherlv_3= '}' ( (lv_meta_4_0= ruleMetadataValue ) )* )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2264:1: ( ( (lv_meta_0_0= ruleMetadataValue ) )* otherlv_1= '{' ( (lv_blocks_2_0= ruleBasicBlock ) )+ otherlv_3= '}' ( (lv_meta_4_0= ruleMetadataValue ) )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2264:2: ( (lv_meta_0_0= ruleMetadataValue ) )* otherlv_1= '{' ( (lv_blocks_2_0= ruleBasicBlock ) )+ otherlv_3= '}' ( (lv_meta_4_0= ruleMetadataValue ) )*
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2264:2: ( (lv_meta_0_0= ruleMetadataValue ) )*
            loop91:
            do {
                int alt91=2;
                int LA91_0 = input.LA(1);

                if ( (LA91_0==201||LA91_0==222) ) {
                    alt91=1;
                }


                switch (alt91) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2265:1: (lv_meta_0_0= ruleMetadataValue )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2265:1: (lv_meta_0_0= ruleMetadataValue )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2266:3: lv_meta_0_0= ruleMetadataValue
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFunctionBodyAccess().getMetaMetadataValueParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleMetadataValue_in_ruleFunctionBody4768);
            	    lv_meta_0_0=ruleMetadataValue();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFunctionBodyRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"meta",
            	            		lv_meta_0_0, 
            	            		"MetadataValue");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop91;
                }
            } while (true);

            otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleFunctionBody4781); 

                	newLeafNode(otherlv_1, grammarAccess.getFunctionBodyAccess().getLeftCurlyBracketKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2286:1: ( (lv_blocks_2_0= ruleBasicBlock ) )+
            int cnt92=0;
            loop92:
            do {
                int alt92=2;
                int LA92_0 = input.LA(1);

                if ( ((LA92_0>=RULE_INT && LA92_0<=RULE_VAR_TYPE)||LA92_0==RULE_NOBRACKET||LA92_0==33||(LA92_0>=43 && LA92_0<=47)||LA92_0==53||(LA92_0>=59 && LA92_0<=60)||(LA92_0>=62 && LA92_0<=64)||(LA92_0>=72 && LA92_0<=73)||(LA92_0>=75 && LA92_0<=77)||(LA92_0>=79 && LA92_0<=80)||LA92_0==85||(LA92_0>=88 && LA92_0<=90)||LA92_0==99||(LA92_0>=133 && LA92_0<=134)||(LA92_0>=139 && LA92_0<=157)||(LA92_0>=178 && LA92_0<=187)||(LA92_0>=190 && LA92_0<=195)||(LA92_0>=197 && LA92_0<=199)||LA92_0==202) ) {
                    alt92=1;
                }


                switch (alt92) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2287:1: (lv_blocks_2_0= ruleBasicBlock )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2287:1: (lv_blocks_2_0= ruleBasicBlock )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2288:3: lv_blocks_2_0= ruleBasicBlock
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFunctionBodyAccess().getBlocksBasicBlockParserRuleCall_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleBasicBlock_in_ruleFunctionBody4802);
            	    lv_blocks_2_0=ruleBasicBlock();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFunctionBodyRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"blocks",
            	            		lv_blocks_2_0, 
            	            		"BasicBlock");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt92 >= 1 ) break loop92;
                        EarlyExitException eee =
                            new EarlyExitException(92, input);
                        throw eee;
                }
                cnt92++;
            } while (true);

            otherlv_3=(Token)match(input,36,FOLLOW_36_in_ruleFunctionBody4815); 

                	newLeafNode(otherlv_3, grammarAccess.getFunctionBodyAccess().getRightCurlyBracketKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2308:1: ( (lv_meta_4_0= ruleMetadataValue ) )*
            loop93:
            do {
                int alt93=2;
                int LA93_0 = input.LA(1);

                if ( (LA93_0==201||LA93_0==222) ) {
                    alt93=1;
                }


                switch (alt93) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2309:1: (lv_meta_4_0= ruleMetadataValue )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2309:1: (lv_meta_4_0= ruleMetadataValue )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2310:3: lv_meta_4_0= ruleMetadataValue
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getFunctionBodyAccess().getMetaMetadataValueParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleMetadataValue_in_ruleFunctionBody4836);
            	    lv_meta_4_0=ruleMetadataValue();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getFunctionBodyRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"meta",
            	            		lv_meta_4_0, 
            	            		"MetadataValue");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop93;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFunctionBody"


    // $ANTLR start "entryRuleBasicBlock"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2334:1: entryRuleBasicBlock returns [EObject current=null] : iv_ruleBasicBlock= ruleBasicBlock EOF ;
    public final EObject entryRuleBasicBlock() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBasicBlock = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2335:2: (iv_ruleBasicBlock= ruleBasicBlock EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2336:2: iv_ruleBasicBlock= ruleBasicBlock EOF
            {
             newCompositeNode(grammarAccess.getBasicBlockRule()); 
            pushFollow(FOLLOW_ruleBasicBlock_in_entryRuleBasicBlock4873);
            iv_ruleBasicBlock=ruleBasicBlock();

            state._fsp--;

             current =iv_ruleBasicBlock; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBasicBlock4883); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBasicBlock"


    // $ANTLR start "ruleBasicBlock"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2343:1: ruleBasicBlock returns [EObject current=null] : ( ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )? ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )* ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )? ( (lv_terminator_5_0= ruleRet_Instr ) ) ) ;
    public final EObject ruleBasicBlock() throws RecognitionException {
        EObject current = null;

        Token lv_label_0_1=null;
        Token lv_label_0_2=null;
        Token otherlv_1=null;
        Token lv_retadr_3_0=null;
        Token otherlv_4=null;
        EObject lv_instructions_2_1 = null;

        EObject lv_instructions_2_2 = null;

        EObject lv_terminator_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2346:28: ( ( ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )? ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )* ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )? ( (lv_terminator_5_0= ruleRet_Instr ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:1: ( ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )? ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )* ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )? ( (lv_terminator_5_0= ruleRet_Instr ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:1: ( ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )? ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )* ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )? ( (lv_terminator_5_0= ruleRet_Instr ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:2: ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )? ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )* ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )? ( (lv_terminator_5_0= ruleRet_Instr ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:2: ( ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':' )?
            int alt95=2;
            int LA95_0 = input.LA(1);

            if ( (LA95_0==RULE_NOBRACKET||LA95_0==53) ) {
                alt95=1;
            }
            switch (alt95) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:3: ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) ) otherlv_1= ':'
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2347:3: ( ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2348:1: ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2348:1: ( (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2349:1: (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2349:1: (lv_label_0_1= RULE_NOBRACKET | lv_label_0_2= 'catch' )
                    int alt94=2;
                    int LA94_0 = input.LA(1);

                    if ( (LA94_0==RULE_NOBRACKET) ) {
                        alt94=1;
                    }
                    else if ( (LA94_0==53) ) {
                        alt94=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 94, 0, input);

                        throw nvae;
                    }
                    switch (alt94) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2350:3: lv_label_0_1= RULE_NOBRACKET
                            {
                            lv_label_0_1=(Token)match(input,RULE_NOBRACKET,FOLLOW_RULE_NOBRACKET_in_ruleBasicBlock4928); 

                            			newLeafNode(lv_label_0_1, grammarAccess.getBasicBlockAccess().getLabelNOBRACKETTerminalRuleCall_0_0_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getBasicBlockRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"label",
                                    		lv_label_0_1, 
                                    		"NOBRACKET");
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2365:8: lv_label_0_2= 'catch'
                            {
                            lv_label_0_2=(Token)match(input,53,FOLLOW_53_in_ruleBasicBlock4949); 

                                    newLeafNode(lv_label_0_2, grammarAccess.getBasicBlockAccess().getLabelCatchKeyword_0_0_0_1());
                                

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getBasicBlockRule());
                            	        }
                                   		setWithLastConsumed(current, "label", lv_label_0_2, null);
                            	    

                            }
                            break;

                    }


                    }


                    }

                    otherlv_1=(Token)match(input,54,FOLLOW_54_in_ruleBasicBlock4977); 

                        	newLeafNode(otherlv_1, grammarAccess.getBasicBlockAccess().getColonKeyword_0_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2384:3: ( ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) ) )*
            loop97:
            do {
                int alt97=2;
                int LA97_0 = input.LA(1);

                if ( (LA97_0==RULE_VAR_TYPE) ) {
                    int LA97_1 = input.LA(2);

                    if ( (LA97_1==25) ) {
                        int LA97_4 = input.LA(3);

                        if ( (LA97_4==RULE_ARRAYL||(LA97_4>=RULE_INT && LA97_4<=RULE_VAR_TYPE)||(LA97_4>=28 && LA97_4<=31)||(LA97_4>=33 && LA97_4<=34)||LA97_4==40||(LA97_4>=42 && LA97_4<=47)||(LA97_4>=59 && LA97_4<=60)||(LA97_4>=62 && LA97_4<=64)||(LA97_4>=72 && LA97_4<=73)||(LA97_4>=75 && LA97_4<=77)||(LA97_4>=79 && LA97_4<=80)||LA97_4==85||(LA97_4>=88 && LA97_4<=90)||LA97_4==99||(LA97_4>=133 && LA97_4<=134)||(LA97_4>=139 && LA97_4<=157)||(LA97_4>=178 && LA97_4<=187)||(LA97_4>=190 && LA97_4<=192)||(LA97_4>=206 && LA97_4<=221)) ) {
                            alt97=1;
                        }


                    }


                }
                else if ( ((LA97_0>=RULE_INT && LA97_0<=RULE_INTEGER)||LA97_0==33||(LA97_0>=43 && LA97_0<=47)||(LA97_0>=59 && LA97_0<=60)||(LA97_0>=62 && LA97_0<=64)||(LA97_0>=72 && LA97_0<=73)||(LA97_0>=75 && LA97_0<=77)||(LA97_0>=79 && LA97_0<=80)||LA97_0==85||(LA97_0>=88 && LA97_0<=90)||LA97_0==99||(LA97_0>=133 && LA97_0<=134)||(LA97_0>=139 && LA97_0<=157)||(LA97_0>=178 && LA97_0<=187)||(LA97_0>=190 && LA97_0<=192)) ) {
                    alt97=1;
                }


                switch (alt97) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2385:1: ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2385:1: ( (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2386:1: (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2386:1: (lv_instructions_2_1= ruleNamedType | lv_instructions_2_2= ruleInstruction )
            	    int alt96=2;
            	    int LA96_0 = input.LA(1);

            	    if ( ((LA96_0>=RULE_INT && LA96_0<=RULE_VAR_TYPE)||LA96_0==33||(LA96_0>=43 && LA96_0<=47)) ) {
            	        alt96=1;
            	    }
            	    else if ( ((LA96_0>=59 && LA96_0<=60)||(LA96_0>=62 && LA96_0<=64)||(LA96_0>=72 && LA96_0<=73)||(LA96_0>=75 && LA96_0<=77)||(LA96_0>=79 && LA96_0<=80)||LA96_0==85||(LA96_0>=88 && LA96_0<=90)||LA96_0==99||(LA96_0>=133 && LA96_0<=134)||(LA96_0>=139 && LA96_0<=157)||(LA96_0>=178 && LA96_0<=187)||(LA96_0>=190 && LA96_0<=192)) ) {
            	        alt96=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 96, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt96) {
            	        case 1 :
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2387:3: lv_instructions_2_1= ruleNamedType
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getBasicBlockAccess().getInstructionsNamedTypeParserRuleCall_1_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleNamedType_in_ruleBasicBlock5002);
            	            lv_instructions_2_1=ruleNamedType();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"instructions",
            	                    		lv_instructions_2_1, 
            	                    		"NamedType");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;
            	        case 2 :
            	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2402:8: lv_instructions_2_2= ruleInstruction
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getBasicBlockAccess().getInstructionsInstructionParserRuleCall_1_0_1()); 
            	            	    
            	            pushFollow(FOLLOW_ruleInstruction_in_ruleBasicBlock5021);
            	            lv_instructions_2_2=ruleInstruction();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"instructions",
            	                    		lv_instructions_2_2, 
            	                    		"Instruction");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }
            	            break;

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop97;
                }
            } while (true);

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2420:3: ( ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '=' )?
            int alt98=2;
            int LA98_0 = input.LA(1);

            if ( (LA98_0==RULE_VAR_TYPE) ) {
                alt98=1;
            }
            switch (alt98) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2420:4: ( (lv_retadr_3_0= RULE_VAR_TYPE ) ) otherlv_4= '='
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2420:4: ( (lv_retadr_3_0= RULE_VAR_TYPE ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2421:1: (lv_retadr_3_0= RULE_VAR_TYPE )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2421:1: (lv_retadr_3_0= RULE_VAR_TYPE )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2422:3: lv_retadr_3_0= RULE_VAR_TYPE
                    {
                    lv_retadr_3_0=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleBasicBlock5043); 

                    			newLeafNode(lv_retadr_3_0, grammarAccess.getBasicBlockAccess().getRetadrVAR_TYPETerminalRuleCall_2_0_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getBasicBlockRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"retadr",
                            		lv_retadr_3_0, 
                            		"VAR_TYPE");
                    	    

                    }


                    }

                    otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleBasicBlock5060); 

                        	newLeafNode(otherlv_4, grammarAccess.getBasicBlockAccess().getEqualsSignKeyword_2_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2442:3: ( (lv_terminator_5_0= ruleRet_Instr ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2443:1: (lv_terminator_5_0= ruleRet_Instr )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2443:1: (lv_terminator_5_0= ruleRet_Instr )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2444:3: lv_terminator_5_0= ruleRet_Instr
            {
             
            	        newCompositeNode(grammarAccess.getBasicBlockAccess().getTerminatorRet_InstrParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleRet_Instr_in_ruleBasicBlock5083);
            lv_terminator_5_0=ruleRet_Instr();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getBasicBlockRule());
            	        }
                   		set(
                   			current, 
                   			"terminator",
                    		lv_terminator_5_0, 
                    		"Ret_Instr");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBasicBlock"


    // $ANTLR start "entryRuleRet_Instr"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2468:1: entryRuleRet_Instr returns [EObject current=null] : iv_ruleRet_Instr= ruleRet_Instr EOF ;
    public final EObject entryRuleRet_Instr() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRet_Instr = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2469:2: (iv_ruleRet_Instr= ruleRet_Instr EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2470:2: iv_ruleRet_Instr= ruleRet_Instr EOF
            {
             newCompositeNode(grammarAccess.getRet_InstrRule()); 
            pushFollow(FOLLOW_ruleRet_Instr_in_entryRuleRet_Instr5119);
            iv_ruleRet_Instr=ruleRet_Instr();

            state._fsp--;

             current =iv_ruleRet_Instr; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRet_Instr5129); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRet_Instr"


    // $ANTLR start "ruleRet_Instr"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2477:1: ruleRet_Instr returns [EObject current=null] : (this_Return_0= ruleReturn | this_Branch_1= ruleBranch | this_Switch_2= ruleSwitch | this_IndirectBranch_3= ruleIndirectBranch | this_Invoke_4= ruleInvoke | this_Resume_5= ruleResume | this_Unreachable_6= ruleUnreachable ) ;
    public final EObject ruleRet_Instr() throws RecognitionException {
        EObject current = null;

        EObject this_Return_0 = null;

        EObject this_Branch_1 = null;

        EObject this_Switch_2 = null;

        EObject this_IndirectBranch_3 = null;

        EObject this_Invoke_4 = null;

        EObject this_Resume_5 = null;

        EObject this_Unreachable_6 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2480:28: ( (this_Return_0= ruleReturn | this_Branch_1= ruleBranch | this_Switch_2= ruleSwitch | this_IndirectBranch_3= ruleIndirectBranch | this_Invoke_4= ruleInvoke | this_Resume_5= ruleResume | this_Unreachable_6= ruleUnreachable ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2481:1: (this_Return_0= ruleReturn | this_Branch_1= ruleBranch | this_Switch_2= ruleSwitch | this_IndirectBranch_3= ruleIndirectBranch | this_Invoke_4= ruleInvoke | this_Resume_5= ruleResume | this_Unreachable_6= ruleUnreachable )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2481:1: (this_Return_0= ruleReturn | this_Branch_1= ruleBranch | this_Switch_2= ruleSwitch | this_IndirectBranch_3= ruleIndirectBranch | this_Invoke_4= ruleInvoke | this_Resume_5= ruleResume | this_Unreachable_6= ruleUnreachable )
            int alt99=7;
            switch ( input.LA(1) ) {
            case 199:
                {
                alt99=1;
                }
                break;
            case 202:
                {
                alt99=2;
                }
                break;
            case 194:
                {
                alt99=3;
                }
                break;
            case 193:
                {
                alt99=4;
                }
                break;
            case 195:
                {
                alt99=5;
                }
                break;
            case 197:
                {
                alt99=6;
                }
                break;
            case 198:
                {
                alt99=7;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 99, 0, input);

                throw nvae;
            }

            switch (alt99) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2482:5: this_Return_0= ruleReturn
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getReturnParserRuleCall_0()); 
                        
                    pushFollow(FOLLOW_ruleReturn_in_ruleRet_Instr5176);
                    this_Return_0=ruleReturn();

                    state._fsp--;

                     
                            current = this_Return_0; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2492:5: this_Branch_1= ruleBranch
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getBranchParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleBranch_in_ruleRet_Instr5203);
                    this_Branch_1=ruleBranch();

                    state._fsp--;

                     
                            current = this_Branch_1; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2502:5: this_Switch_2= ruleSwitch
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getSwitchParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleSwitch_in_ruleRet_Instr5230);
                    this_Switch_2=ruleSwitch();

                    state._fsp--;

                     
                            current = this_Switch_2; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2512:5: this_IndirectBranch_3= ruleIndirectBranch
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getIndirectBranchParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleIndirectBranch_in_ruleRet_Instr5257);
                    this_IndirectBranch_3=ruleIndirectBranch();

                    state._fsp--;

                     
                            current = this_IndirectBranch_3; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2522:5: this_Invoke_4= ruleInvoke
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getInvokeParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleInvoke_in_ruleRet_Instr5284);
                    this_Invoke_4=ruleInvoke();

                    state._fsp--;

                     
                            current = this_Invoke_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2532:5: this_Resume_5= ruleResume
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getResumeParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleResume_in_ruleRet_Instr5311);
                    this_Resume_5=ruleResume();

                    state._fsp--;

                     
                            current = this_Resume_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2542:5: this_Unreachable_6= ruleUnreachable
                    {
                     
                            newCompositeNode(grammarAccess.getRet_InstrAccess().getUnreachableParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleUnreachable_in_ruleRet_Instr5338);
                    this_Unreachable_6=ruleUnreachable();

                    state._fsp--;

                     
                            current = this_Unreachable_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRet_Instr"


    // $ANTLR start "entryRuleTypeList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2558:1: entryRuleTypeList returns [EObject current=null] : iv_ruleTypeList= ruleTypeList EOF ;
    public final EObject entryRuleTypeList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeList = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2559:2: (iv_ruleTypeList= ruleTypeList EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2560:2: iv_ruleTypeList= ruleTypeList EOF
            {
             newCompositeNode(grammarAccess.getTypeListRule()); 
            pushFollow(FOLLOW_ruleTypeList_in_entryRuleTypeList5373);
            iv_ruleTypeList=ruleTypeList();

            state._fsp--;

             current =iv_ruleTypeList; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeList5383); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeList"


    // $ANTLR start "ruleTypeList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2567:1: ruleTypeList returns [EObject current=null] : ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )? ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' ) ) ;
    public final EObject ruleTypeList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_5=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        AntlrDatatypeRuleToken lv_types_2_0 = null;

        EObject lv_typelists_3_0 = null;

        AntlrDatatypeRuleToken lv_types_6_0 = null;

        EObject lv_typelists_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2570:28: ( ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )? ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2571:1: ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )? ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2571:1: ( () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )? ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2571:2: () otherlv_1= '(' ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )? ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2571:2: ()
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2572:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getTypeListAccess().getTypeListAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,52,FOLLOW_52_in_ruleTypeList5429); 

                	newLeafNode(otherlv_1, grammarAccess.getTypeListAccess().getLeftParenthesisKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2581:1: ( ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )* )?
            int alt105=2;
            int LA105_0 = input.LA(1);

            if ( ((LA105_0>=RULE_INT && LA105_0<=RULE_VAR_TYPE)||LA105_0==33||(LA105_0>=43 && LA105_0<=47)) ) {
                alt105=1;
            }
            switch (alt105) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2581:2: ( (lv_types_2_0= ruleType ) ) ( (lv_typelists_3_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )*
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2581:2: ( (lv_types_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2582:1: (lv_types_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2582:1: (lv_types_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2583:3: lv_types_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getTypeListAccess().getTypesTypeParserRuleCall_2_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleTypeList5451);
                    lv_types_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getTypeListRule());
                    	        }
                           		add(
                           			current, 
                           			"types",
                            		lv_types_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2599:2: ( (lv_typelists_3_0= ruleTypeList ) )?
                    int alt100=2;
                    int LA100_0 = input.LA(1);

                    if ( (LA100_0==52) ) {
                        alt100=1;
                    }
                    switch (alt100) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2600:1: (lv_typelists_3_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2600:1: (lv_typelists_3_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2601:3: lv_typelists_3_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getTypeListAccess().getTypelistsTypeListParserRuleCall_2_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleTypeList5472);
                            lv_typelists_3_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getTypeListRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"typelists",
                                    		lv_typelists_3_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2617:3: ( ruleRETURN_ATTRIBUTES )?
                    int alt101=2;
                    int LA101_0 = input.LA(1);

                    if ( ((LA101_0>=91 && LA101_0<=98)) ) {
                        alt101=1;
                    }
                    switch (alt101) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2618:5: ruleRETURN_ATTRIBUTES
                            {
                             
                                    newCompositeNode(grammarAccess.getTypeListAccess().getRETURN_ATTRIBUTESParserRuleCall_2_2()); 
                                
                            pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleTypeList5490);
                            ruleRETURN_ATTRIBUTES();

                            state._fsp--;

                             
                                    afterParserOrEnumRuleCall();
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2625:3: (otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )? )*
                    loop104:
                    do {
                        int alt104=2;
                        int LA104_0 = input.LA(1);

                        if ( (LA104_0==27) ) {
                            alt104=1;
                        }


                        switch (alt104) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2625:5: otherlv_5= ',' ( (lv_types_6_0= ruleType ) ) ( (lv_typelists_7_0= ruleTypeList ) )? ( ruleRETURN_ATTRIBUTES )?
                    	    {
                    	    otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleTypeList5504); 

                    	        	newLeafNode(otherlv_5, grammarAccess.getTypeListAccess().getCommaKeyword_2_3_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2629:1: ( (lv_types_6_0= ruleType ) )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2630:1: (lv_types_6_0= ruleType )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2630:1: (lv_types_6_0= ruleType )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2631:3: lv_types_6_0= ruleType
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getTypeListAccess().getTypesTypeParserRuleCall_2_3_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleType_in_ruleTypeList5525);
                    	    lv_types_6_0=ruleType();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getTypeListRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"types",
                    	            		lv_types_6_0, 
                    	            		"Type");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2647:2: ( (lv_typelists_7_0= ruleTypeList ) )?
                    	    int alt102=2;
                    	    int LA102_0 = input.LA(1);

                    	    if ( (LA102_0==52) ) {
                    	        alt102=1;
                    	    }
                    	    switch (alt102) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2648:1: (lv_typelists_7_0= ruleTypeList )
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2648:1: (lv_typelists_7_0= ruleTypeList )
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2649:3: lv_typelists_7_0= ruleTypeList
                    	            {
                    	             
                    	            	        newCompositeNode(grammarAccess.getTypeListAccess().getTypelistsTypeListParserRuleCall_2_3_2_0()); 
                    	            	    
                    	            pushFollow(FOLLOW_ruleTypeList_in_ruleTypeList5546);
                    	            lv_typelists_7_0=ruleTypeList();

                    	            state._fsp--;


                    	            	        if (current==null) {
                    	            	            current = createModelElementForParent(grammarAccess.getTypeListRule());
                    	            	        }
                    	                   		add(
                    	                   			current, 
                    	                   			"typelists",
                    	                    		lv_typelists_7_0, 
                    	                    		"TypeList");
                    	            	        afterParserOrEnumRuleCall();
                    	            	    

                    	            }


                    	            }
                    	            break;

                    	    }

                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2665:3: ( ruleRETURN_ATTRIBUTES )?
                    	    int alt103=2;
                    	    int LA103_0 = input.LA(1);

                    	    if ( ((LA103_0>=91 && LA103_0<=98)) ) {
                    	        alt103=1;
                    	    }
                    	    switch (alt103) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2666:5: ruleRETURN_ATTRIBUTES
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getTypeListAccess().getRETURN_ATTRIBUTESParserRuleCall_2_3_3()); 
                    	                
                    	            pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleTypeList5564);
                    	            ruleRETURN_ATTRIBUTES();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop104;
                        }
                    } while (true);


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2673:7: ( (otherlv_9= ')' (otherlv_10= '*' )* ) | otherlv_11= ')*' | otherlv_12= ')**' | otherlv_13= ')***' | otherlv_14= ')****' )
            int alt107=5;
            switch ( input.LA(1) ) {
            case 35:
                {
                alt107=1;
                }
                break;
            case 55:
                {
                alt107=2;
                }
                break;
            case 56:
                {
                alt107=3;
                }
                break;
            case 57:
                {
                alt107=4;
                }
                break;
            case 58:
                {
                alt107=5;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 107, 0, input);

                throw nvae;
            }

            switch (alt107) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2673:8: (otherlv_9= ')' (otherlv_10= '*' )* )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2673:8: (otherlv_9= ')' (otherlv_10= '*' )* )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2673:10: otherlv_9= ')' (otherlv_10= '*' )*
                    {
                    otherlv_9=(Token)match(input,35,FOLLOW_35_in_ruleTypeList5583); 

                        	newLeafNode(otherlv_9, grammarAccess.getTypeListAccess().getRightParenthesisKeyword_3_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2677:1: (otherlv_10= '*' )*
                    loop106:
                    do {
                        int alt106=2;
                        int LA106_0 = input.LA(1);

                        if ( (LA106_0==39) ) {
                            alt106=1;
                        }


                        switch (alt106) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2677:3: otherlv_10= '*'
                    	    {
                    	    otherlv_10=(Token)match(input,39,FOLLOW_39_in_ruleTypeList5596); 

                    	        	newLeafNode(otherlv_10, grammarAccess.getTypeListAccess().getAsteriskKeyword_3_0_1());
                    	        

                    	    }
                    	    break;

                    	default :
                    	    break loop106;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2682:7: otherlv_11= ')*'
                    {
                    otherlv_11=(Token)match(input,55,FOLLOW_55_in_ruleTypeList5617); 

                        	newLeafNode(otherlv_11, grammarAccess.getTypeListAccess().getRightParenthesisAsteriskKeyword_3_1());
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2687:7: otherlv_12= ')**'
                    {
                    otherlv_12=(Token)match(input,56,FOLLOW_56_in_ruleTypeList5635); 

                        	newLeafNode(otherlv_12, grammarAccess.getTypeListAccess().getRightParenthesisAsteriskAsteriskKeyword_3_2());
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2692:7: otherlv_13= ')***'
                    {
                    otherlv_13=(Token)match(input,57,FOLLOW_57_in_ruleTypeList5653); 

                        	newLeafNode(otherlv_13, grammarAccess.getTypeListAccess().getRightParenthesisAsteriskAsteriskAsteriskKeyword_3_3());
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2697:7: otherlv_14= ')****'
                    {
                    otherlv_14=(Token)match(input,58,FOLLOW_58_in_ruleTypeList5671); 

                        	newLeafNode(otherlv_14, grammarAccess.getTypeListAccess().getRightParenthesisAsteriskAsteriskAsteriskAsteriskKeyword_3_4());
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeList"


    // $ANTLR start "entryRuleInstruction"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2709:1: entryRuleInstruction returns [EObject current=null] : iv_ruleInstruction= ruleInstruction EOF ;
    public final EObject entryRuleInstruction() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInstruction = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2710:2: (iv_ruleInstruction= ruleInstruction EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2711:2: iv_ruleInstruction= ruleInstruction EOF
            {
             newCompositeNode(grammarAccess.getInstructionRule()); 
            pushFollow(FOLLOW_ruleInstruction_in_entryRuleInstruction5708);
            iv_ruleInstruction=ruleInstruction();

            state._fsp--;

             current =iv_ruleInstruction; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInstruction5718); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInstruction"


    // $ANTLR start "ruleInstruction"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2718:1: ruleInstruction returns [EObject current=null] : ( ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad ) | ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore ) | this_Fence_4= ruleFence | this_GetElementPtr_5= ruleGetElementPtr | this_LOGICAL_OP_6= ruleLOGICAL_OP | this_ARITHMETIC_OP_7= ruleARITHMETIC_OP | this_Compare_8= ruleCompare | this_Cast_9= ruleCast | this_ShuffleVector_10= ruleShuffleVector | this_InsertElement_11= ruleInsertElement | this_ExtractElement_12= ruleExtractElement | this_InsertValue_13= ruleInsertValue | this_ExtractValue_14= ruleExtractValue | this_Alloc_15= ruleAlloc | this_CmpXchg_16= ruleCmpXchg | this_AtomicRMW_17= ruleAtomicRMW | this_PHI_18= rulePHI | this_Select_19= ruleSelect | this_Call_20= ruleCall | this_VA_Arg_21= ruleVA_Arg | this_LandingPad_22= ruleLandingPad ) ;
    public final EObject ruleInstruction() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject this_Load_1 = null;

        EObject this_Store_3 = null;

        EObject this_Fence_4 = null;

        EObject this_GetElementPtr_5 = null;

        EObject this_LOGICAL_OP_6 = null;

        EObject this_ARITHMETIC_OP_7 = null;

        EObject this_Compare_8 = null;

        EObject this_Cast_9 = null;

        EObject this_ShuffleVector_10 = null;

        EObject this_InsertElement_11 = null;

        EObject this_ExtractElement_12 = null;

        EObject this_InsertValue_13 = null;

        EObject this_ExtractValue_14 = null;

        EObject this_Alloc_15 = null;

        EObject this_CmpXchg_16 = null;

        EObject this_AtomicRMW_17 = null;

        EObject this_PHI_18 = null;

        EObject this_Select_19 = null;

        EObject this_Call_20 = null;

        EObject this_VA_Arg_21 = null;

        EObject this_LandingPad_22 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2721:28: ( ( ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad ) | ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore ) | this_Fence_4= ruleFence | this_GetElementPtr_5= ruleGetElementPtr | this_LOGICAL_OP_6= ruleLOGICAL_OP | this_ARITHMETIC_OP_7= ruleARITHMETIC_OP | this_Compare_8= ruleCompare | this_Cast_9= ruleCast | this_ShuffleVector_10= ruleShuffleVector | this_InsertElement_11= ruleInsertElement | this_ExtractElement_12= ruleExtractElement | this_InsertValue_13= ruleInsertValue | this_ExtractValue_14= ruleExtractValue | this_Alloc_15= ruleAlloc | this_CmpXchg_16= ruleCmpXchg | this_AtomicRMW_17= ruleAtomicRMW | this_PHI_18= rulePHI | this_Select_19= ruleSelect | this_Call_20= ruleCall | this_VA_Arg_21= ruleVA_Arg | this_LandingPad_22= ruleLandingPad ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:1: ( ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad ) | ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore ) | this_Fence_4= ruleFence | this_GetElementPtr_5= ruleGetElementPtr | this_LOGICAL_OP_6= ruleLOGICAL_OP | this_ARITHMETIC_OP_7= ruleARITHMETIC_OP | this_Compare_8= ruleCompare | this_Cast_9= ruleCast | this_ShuffleVector_10= ruleShuffleVector | this_InsertElement_11= ruleInsertElement | this_ExtractElement_12= ruleExtractElement | this_InsertValue_13= ruleInsertValue | this_ExtractValue_14= ruleExtractValue | this_Alloc_15= ruleAlloc | this_CmpXchg_16= ruleCmpXchg | this_AtomicRMW_17= ruleAtomicRMW | this_PHI_18= rulePHI | this_Select_19= ruleSelect | this_Call_20= ruleCall | this_VA_Arg_21= ruleVA_Arg | this_LandingPad_22= ruleLandingPad )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:1: ( ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad ) | ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore ) | this_Fence_4= ruleFence | this_GetElementPtr_5= ruleGetElementPtr | this_LOGICAL_OP_6= ruleLOGICAL_OP | this_ARITHMETIC_OP_7= ruleARITHMETIC_OP | this_Compare_8= ruleCompare | this_Cast_9= ruleCast | this_ShuffleVector_10= ruleShuffleVector | this_InsertElement_11= ruleInsertElement | this_ExtractElement_12= ruleExtractElement | this_InsertValue_13= ruleInsertValue | this_ExtractValue_14= ruleExtractValue | this_Alloc_15= ruleAlloc | this_CmpXchg_16= ruleCmpXchg | this_AtomicRMW_17= ruleAtomicRMW | this_PHI_18= rulePHI | this_Select_19= ruleSelect | this_Call_20= ruleCall | this_VA_Arg_21= ruleVA_Arg | this_LandingPad_22= ruleLandingPad )
            int alt110=21;
            alt110 = dfa110.predict(input);
            switch (alt110) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:2: ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:2: ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:3: (otherlv_0= 'volatile' )? this_Load_1= ruleLoad
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:3: (otherlv_0= 'volatile' )?
                    int alt108=2;
                    int LA108_0 = input.LA(1);

                    if ( (LA108_0==59) ) {
                        alt108=1;
                    }
                    switch (alt108) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2722:5: otherlv_0= 'volatile'
                            {
                            otherlv_0=(Token)match(input,59,FOLLOW_59_in_ruleInstruction5757); 

                                	newLeafNode(otherlv_0, grammarAccess.getInstructionAccess().getVolatileKeyword_0_0());
                                

                            }
                            break;

                    }

                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getLoadParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleLoad_in_ruleInstruction5781);
                    this_Load_1=ruleLoad();

                    state._fsp--;

                     
                            current = this_Load_1; 
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2736:6: ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2736:6: ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2736:7: (otherlv_2= 'volatile' )? this_Store_3= ruleStore
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2736:7: (otherlv_2= 'volatile' )?
                    int alt109=2;
                    int LA109_0 = input.LA(1);

                    if ( (LA109_0==59) ) {
                        alt109=1;
                    }
                    switch (alt109) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2736:9: otherlv_2= 'volatile'
                            {
                            otherlv_2=(Token)match(input,59,FOLLOW_59_in_ruleInstruction5801); 

                                	newLeafNode(otherlv_2, grammarAccess.getInstructionAccess().getVolatileKeyword_1_0());
                                

                            }
                            break;

                    }

                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getStoreParserRuleCall_1_1()); 
                        
                    pushFollow(FOLLOW_ruleStore_in_ruleInstruction5825);
                    this_Store_3=ruleStore();

                    state._fsp--;

                     
                            current = this_Store_3; 
                            afterParserOrEnumRuleCall();
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2751:5: this_Fence_4= ruleFence
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getFenceParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleFence_in_ruleInstruction5853);
                    this_Fence_4=ruleFence();

                    state._fsp--;

                     
                            current = this_Fence_4; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2761:5: this_GetElementPtr_5= ruleGetElementPtr
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getGetElementPtrParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleGetElementPtr_in_ruleInstruction5880);
                    this_GetElementPtr_5=ruleGetElementPtr();

                    state._fsp--;

                     
                            current = this_GetElementPtr_5; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2771:5: this_LOGICAL_OP_6= ruleLOGICAL_OP
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getLOGICAL_OPParserRuleCall_4()); 
                        
                    pushFollow(FOLLOW_ruleLOGICAL_OP_in_ruleInstruction5907);
                    this_LOGICAL_OP_6=ruleLOGICAL_OP();

                    state._fsp--;

                     
                            current = this_LOGICAL_OP_6; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2781:5: this_ARITHMETIC_OP_7= ruleARITHMETIC_OP
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getARITHMETIC_OPParserRuleCall_5()); 
                        
                    pushFollow(FOLLOW_ruleARITHMETIC_OP_in_ruleInstruction5934);
                    this_ARITHMETIC_OP_7=ruleARITHMETIC_OP();

                    state._fsp--;

                     
                            current = this_ARITHMETIC_OP_7; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2791:5: this_Compare_8= ruleCompare
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getCompareParserRuleCall_6()); 
                        
                    pushFollow(FOLLOW_ruleCompare_in_ruleInstruction5961);
                    this_Compare_8=ruleCompare();

                    state._fsp--;

                     
                            current = this_Compare_8; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2801:5: this_Cast_9= ruleCast
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getCastParserRuleCall_7()); 
                        
                    pushFollow(FOLLOW_ruleCast_in_ruleInstruction5988);
                    this_Cast_9=ruleCast();

                    state._fsp--;

                     
                            current = this_Cast_9; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2811:5: this_ShuffleVector_10= ruleShuffleVector
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getShuffleVectorParserRuleCall_8()); 
                        
                    pushFollow(FOLLOW_ruleShuffleVector_in_ruleInstruction6015);
                    this_ShuffleVector_10=ruleShuffleVector();

                    state._fsp--;

                     
                            current = this_ShuffleVector_10; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2821:5: this_InsertElement_11= ruleInsertElement
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getInsertElementParserRuleCall_9()); 
                        
                    pushFollow(FOLLOW_ruleInsertElement_in_ruleInstruction6042);
                    this_InsertElement_11=ruleInsertElement();

                    state._fsp--;

                     
                            current = this_InsertElement_11; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2831:5: this_ExtractElement_12= ruleExtractElement
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getExtractElementParserRuleCall_10()); 
                        
                    pushFollow(FOLLOW_ruleExtractElement_in_ruleInstruction6069);
                    this_ExtractElement_12=ruleExtractElement();

                    state._fsp--;

                     
                            current = this_ExtractElement_12; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2841:5: this_InsertValue_13= ruleInsertValue
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getInsertValueParserRuleCall_11()); 
                        
                    pushFollow(FOLLOW_ruleInsertValue_in_ruleInstruction6096);
                    this_InsertValue_13=ruleInsertValue();

                    state._fsp--;

                     
                            current = this_InsertValue_13; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 13 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2851:5: this_ExtractValue_14= ruleExtractValue
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getExtractValueParserRuleCall_12()); 
                        
                    pushFollow(FOLLOW_ruleExtractValue_in_ruleInstruction6123);
                    this_ExtractValue_14=ruleExtractValue();

                    state._fsp--;

                     
                            current = this_ExtractValue_14; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 14 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2861:5: this_Alloc_15= ruleAlloc
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getAllocParserRuleCall_13()); 
                        
                    pushFollow(FOLLOW_ruleAlloc_in_ruleInstruction6150);
                    this_Alloc_15=ruleAlloc();

                    state._fsp--;

                     
                            current = this_Alloc_15; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 15 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2871:5: this_CmpXchg_16= ruleCmpXchg
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getCmpXchgParserRuleCall_14()); 
                        
                    pushFollow(FOLLOW_ruleCmpXchg_in_ruleInstruction6177);
                    this_CmpXchg_16=ruleCmpXchg();

                    state._fsp--;

                     
                            current = this_CmpXchg_16; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 16 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2881:5: this_AtomicRMW_17= ruleAtomicRMW
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getAtomicRMWParserRuleCall_15()); 
                        
                    pushFollow(FOLLOW_ruleAtomicRMW_in_ruleInstruction6204);
                    this_AtomicRMW_17=ruleAtomicRMW();

                    state._fsp--;

                     
                            current = this_AtomicRMW_17; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 17 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2891:5: this_PHI_18= rulePHI
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getPHIParserRuleCall_16()); 
                        
                    pushFollow(FOLLOW_rulePHI_in_ruleInstruction6231);
                    this_PHI_18=rulePHI();

                    state._fsp--;

                     
                            current = this_PHI_18; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 18 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2901:5: this_Select_19= ruleSelect
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getSelectParserRuleCall_17()); 
                        
                    pushFollow(FOLLOW_ruleSelect_in_ruleInstruction6258);
                    this_Select_19=ruleSelect();

                    state._fsp--;

                     
                            current = this_Select_19; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 19 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2911:5: this_Call_20= ruleCall
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getCallParserRuleCall_18()); 
                        
                    pushFollow(FOLLOW_ruleCall_in_ruleInstruction6285);
                    this_Call_20=ruleCall();

                    state._fsp--;

                     
                            current = this_Call_20; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 20 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2921:5: this_VA_Arg_21= ruleVA_Arg
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getVA_ArgParserRuleCall_19()); 
                        
                    pushFollow(FOLLOW_ruleVA_Arg_in_ruleInstruction6312);
                    this_VA_Arg_21=ruleVA_Arg();

                    state._fsp--;

                     
                            current = this_VA_Arg_21; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;
                case 21 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2931:5: this_LandingPad_22= ruleLandingPad
                    {
                     
                            newCompositeNode(grammarAccess.getInstructionAccess().getLandingPadParserRuleCall_20()); 
                        
                    pushFollow(FOLLOW_ruleLandingPad_in_ruleInstruction6339);
                    this_LandingPad_22=ruleLandingPad();

                    state._fsp--;

                     
                            current = this_LandingPad_22; 
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInstruction"


    // $ANTLR start "entryRuleGetElementPtr"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2947:1: entryRuleGetElementPtr returns [EObject current=null] : iv_ruleGetElementPtr= ruleGetElementPtr EOF ;
    public final EObject entryRuleGetElementPtr() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGetElementPtr = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2948:2: (iv_ruleGetElementPtr= ruleGetElementPtr EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2949:2: iv_ruleGetElementPtr= ruleGetElementPtr EOF
            {
             newCompositeNode(grammarAccess.getGetElementPtrRule()); 
            pushFollow(FOLLOW_ruleGetElementPtr_in_entryRuleGetElementPtr6374);
            iv_ruleGetElementPtr=ruleGetElementPtr();

            state._fsp--;

             current =iv_ruleGetElementPtr; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleGetElementPtr6384); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGetElementPtr"


    // $ANTLR start "ruleGetElementPtr"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2956:1: ruleGetElementPtr returns [EObject current=null] : (otherlv_0= 'getelementptr' (otherlv_1= 'inbounds' )? (otherlv_2= '(' )? ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* ) ) ;
    public final EObject ruleGetElementPtr() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_elementtype_3_0 = null;

        EObject lv_types_4_0 = null;

        EObject lv_elementarray_5_0 = null;

        AntlrDatatypeRuleToken lv_element_6_0 = null;

        AntlrDatatypeRuleToken lv_indicetypes_8_0 = null;

        AntlrDatatypeRuleToken lv_indices_9_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2959:28: ( (otherlv_0= 'getelementptr' (otherlv_1= 'inbounds' )? (otherlv_2= '(' )? ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2960:1: (otherlv_0= 'getelementptr' (otherlv_1= 'inbounds' )? (otherlv_2= '(' )? ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2960:1: (otherlv_0= 'getelementptr' (otherlv_1= 'inbounds' )? (otherlv_2= '(' )? ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2960:3: otherlv_0= 'getelementptr' (otherlv_1= 'inbounds' )? (otherlv_2= '(' )? ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* )
            {
            otherlv_0=(Token)match(input,60,FOLLOW_60_in_ruleGetElementPtr6421); 

                	newLeafNode(otherlv_0, grammarAccess.getGetElementPtrAccess().getGetelementptrKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2964:1: (otherlv_1= 'inbounds' )?
            int alt111=2;
            int LA111_0 = input.LA(1);

            if ( (LA111_0==61) ) {
                alt111=1;
            }
            switch (alt111) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2964:3: otherlv_1= 'inbounds'
                    {
                    otherlv_1=(Token)match(input,61,FOLLOW_61_in_ruleGetElementPtr6434); 

                        	newLeafNode(otherlv_1, grammarAccess.getGetElementPtrAccess().getInboundsKeyword_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2968:3: (otherlv_2= '(' )?
            int alt112=2;
            int LA112_0 = input.LA(1);

            if ( (LA112_0==52) ) {
                alt112=1;
            }
            switch (alt112) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2968:5: otherlv_2= '('
                    {
                    otherlv_2=(Token)match(input,52,FOLLOW_52_in_ruleGetElementPtr6449); 

                        	newLeafNode(otherlv_2, grammarAccess.getGetElementPtrAccess().getLeftParenthesisKeyword_2());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:3: ( ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:4: ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) ) ( (lv_element_6_0= ruleType ) ) (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )*
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:4: ( ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? ) | ( (lv_elementarray_5_0= ruleARRAY ) ) )
            int alt114=2;
            int LA114_0 = input.LA(1);

            if ( ((LA114_0>=RULE_INT && LA114_0<=RULE_VAR_TYPE)||LA114_0==33||(LA114_0>=43 && LA114_0<=47)) ) {
                alt114=1;
            }
            else if ( (LA114_0==RULE_ARRAYL) ) {
                alt114=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 114, 0, input);

                throw nvae;
            }
            switch (alt114) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:5: ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:5: ( ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:6: ( (lv_elementtype_3_0= ruleType ) ) ( (lv_types_4_0= ruleTypeList ) )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2972:6: ( (lv_elementtype_3_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2973:1: (lv_elementtype_3_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2973:1: (lv_elementtype_3_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2974:3: lv_elementtype_3_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getElementtypeTypeParserRuleCall_3_0_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleGetElementPtr6475);
                    lv_elementtype_3_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
                    	        }
                           		set(
                           			current, 
                           			"elementtype",
                            		lv_elementtype_3_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2990:2: ( (lv_types_4_0= ruleTypeList ) )?
                    int alt113=2;
                    int LA113_0 = input.LA(1);

                    if ( (LA113_0==52) ) {
                        alt113=1;
                    }
                    switch (alt113) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2991:1: (lv_types_4_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2991:1: (lv_types_4_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:2992:3: lv_types_4_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getTypesTypeListParserRuleCall_3_0_0_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleGetElementPtr6496);
                            lv_types_4_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"types",
                                    		lv_types_4_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3009:6: ( (lv_elementarray_5_0= ruleARRAY ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3009:6: ( (lv_elementarray_5_0= ruleARRAY ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3010:1: (lv_elementarray_5_0= ruleARRAY )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3010:1: (lv_elementarray_5_0= ruleARRAY )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3011:3: lv_elementarray_5_0= ruleARRAY
                    {
                     
                    	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getElementarrayARRAYParserRuleCall_3_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleARRAY_in_ruleGetElementPtr6525);
                    lv_elementarray_5_0=ruleARRAY();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
                    	        }
                           		set(
                           			current, 
                           			"elementarray",
                            		lv_elementarray_5_0, 
                            		"ARRAY");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3027:3: ( (lv_element_6_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3028:1: (lv_element_6_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3028:1: (lv_element_6_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3029:3: lv_element_6_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getElementTypeParserRuleCall_3_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleGetElementPtr6547);
            lv_element_6_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
            	        }
                   		set(
                   			current, 
                   			"element",
                    		lv_element_6_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3045:2: (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )*
            loop115:
            do {
                int alt115=2;
                alt115 = dfa115.predict(input);
                switch (alt115) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3045:4: otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) )
            	    {
            	    otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleGetElementPtr6560); 

            	        	newLeafNode(otherlv_7, grammarAccess.getGetElementPtrAccess().getCommaKeyword_3_2_0());
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3049:1: ( (lv_indicetypes_8_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3050:1: (lv_indicetypes_8_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3050:1: (lv_indicetypes_8_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3051:3: lv_indicetypes_8_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getIndicetypesTypeParserRuleCall_3_2_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleGetElementPtr6581);
            	    lv_indicetypes_8_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"indicetypes",
            	            		lv_indicetypes_8_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3067:2: ( (lv_indices_9_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3068:1: (lv_indices_9_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3068:1: (lv_indices_9_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3069:3: lv_indices_9_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getGetElementPtrAccess().getIndicesTypeParserRuleCall_3_2_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleGetElementPtr6602);
            	    lv_indices_9_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getGetElementPtrRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"indices",
            	            		lv_indices_9_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop115;
                }
            } while (true);


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGetElementPtr"


    // $ANTLR start "entryRuleExtractValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3093:1: entryRuleExtractValue returns [EObject current=null] : iv_ruleExtractValue= ruleExtractValue EOF ;
    public final EObject entryRuleExtractValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtractValue = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3094:2: (iv_ruleExtractValue= ruleExtractValue EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3095:2: iv_ruleExtractValue= ruleExtractValue EOF
            {
             newCompositeNode(grammarAccess.getExtractValueRule()); 
            pushFollow(FOLLOW_ruleExtractValue_in_entryRuleExtractValue6641);
            iv_ruleExtractValue=ruleExtractValue();

            state._fsp--;

             current =iv_ruleExtractValue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtractValue6651); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtractValue"


    // $ANTLR start "ruleExtractValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3102:1: ruleExtractValue returns [EObject current=null] : (otherlv_0= 'extractvalue' ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) ) ( (lv_type_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+ ) ;
    public final EObject ruleExtractValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_4=null;
        Token lv_index_5_0=null;
        EObject lv_array_1_0 = null;

        EObject lv_struct_2_0 = null;

        AntlrDatatypeRuleToken lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3105:28: ( (otherlv_0= 'extractvalue' ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) ) ( (lv_type_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+ ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3106:1: (otherlv_0= 'extractvalue' ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) ) ( (lv_type_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+ )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3106:1: (otherlv_0= 'extractvalue' ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) ) ( (lv_type_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+ )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3106:3: otherlv_0= 'extractvalue' ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) ) ( (lv_type_3_0= ruleType ) ) (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+
            {
            otherlv_0=(Token)match(input,62,FOLLOW_62_in_ruleExtractValue6688); 

                	newLeafNode(otherlv_0, grammarAccess.getExtractValueAccess().getExtractvalueKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3110:1: ( ( (lv_array_1_0= ruleARRAY ) ) | ( (lv_struct_2_0= ruleStructure ) ) )
            int alt116=2;
            int LA116_0 = input.LA(1);

            if ( (LA116_0==RULE_ARRAYL) ) {
                alt116=1;
            }
            else if ( (LA116_0==34||LA116_0==40) ) {
                alt116=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 116, 0, input);

                throw nvae;
            }
            switch (alt116) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3110:2: ( (lv_array_1_0= ruleARRAY ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3110:2: ( (lv_array_1_0= ruleARRAY ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3111:1: (lv_array_1_0= ruleARRAY )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3111:1: (lv_array_1_0= ruleARRAY )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3112:3: lv_array_1_0= ruleARRAY
                    {
                     
                    	        newCompositeNode(grammarAccess.getExtractValueAccess().getArrayARRAYParserRuleCall_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleARRAY_in_ruleExtractValue6710);
                    lv_array_1_0=ruleARRAY();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getExtractValueRule());
                    	        }
                           		set(
                           			current, 
                           			"array",
                            		lv_array_1_0, 
                            		"ARRAY");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3129:6: ( (lv_struct_2_0= ruleStructure ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3129:6: ( (lv_struct_2_0= ruleStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3130:1: (lv_struct_2_0= ruleStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3130:1: (lv_struct_2_0= ruleStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3131:3: lv_struct_2_0= ruleStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getExtractValueAccess().getStructStructureParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStructure_in_ruleExtractValue6737);
                    lv_struct_2_0=ruleStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getExtractValueRule());
                    	        }
                           		set(
                           			current, 
                           			"struct",
                            		lv_struct_2_0, 
                            		"Structure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3147:3: ( (lv_type_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3148:1: (lv_type_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3148:1: (lv_type_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3149:3: lv_type_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getExtractValueAccess().getTypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleExtractValue6759);
            lv_type_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtractValueRule());
            	        }
                   		set(
                   			current, 
                   			"type",
                    		lv_type_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3165:2: (otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) ) )+
            int cnt117=0;
            loop117:
            do {
                int alt117=2;
                int LA117_0 = input.LA(1);

                if ( (LA117_0==27) ) {
                    alt117=1;
                }


                switch (alt117) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3165:4: otherlv_4= ',' ( (lv_index_5_0= RULE_INT ) )
            	    {
            	    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleExtractValue6772); 

            	        	newLeafNode(otherlv_4, grammarAccess.getExtractValueAccess().getCommaKeyword_3_0());
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3169:1: ( (lv_index_5_0= RULE_INT ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3170:1: (lv_index_5_0= RULE_INT )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3170:1: (lv_index_5_0= RULE_INT )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3171:3: lv_index_5_0= RULE_INT
            	    {
            	    lv_index_5_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleExtractValue6789); 

            	    			newLeafNode(lv_index_5_0, grammarAccess.getExtractValueAccess().getIndexINTTerminalRuleCall_3_1_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getExtractValueRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"index",
            	            		lv_index_5_0, 
            	            		"INT");
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt117 >= 1 ) break loop117;
                        EarlyExitException eee =
                            new EarlyExitException(117, input);
                        throw eee;
                }
                cnt117++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtractValue"


    // $ANTLR start "entryRuleInsertValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3195:1: entryRuleInsertValue returns [EObject current=null] : iv_ruleInsertValue= ruleInsertValue EOF ;
    public final EObject entryRuleInsertValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInsertValue = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3196:2: (iv_ruleInsertValue= ruleInsertValue EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3197:2: iv_ruleInsertValue= ruleInsertValue EOF
            {
             newCompositeNode(grammarAccess.getInsertValueRule()); 
            pushFollow(FOLLOW_ruleInsertValue_in_entryRuleInsertValue6832);
            iv_ruleInsertValue=ruleInsertValue();

            state._fsp--;

             current =iv_ruleInsertValue; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInsertValue6842); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInsertValue"


    // $ANTLR start "ruleInsertValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3204:1: ruleInsertValue returns [EObject current=null] : (otherlv_0= 'insertvalue' ( (lv_struct_1_0= ruleStructure ) ) ( (lv_value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_inserttype_4_0= ruleType ) ) ( (lv_insertvalue_5_0= ruleType ) ) (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+ ) ;
    public final EObject ruleInsertValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        Token lv_index_7_0=null;
        EObject lv_struct_1_0 = null;

        AntlrDatatypeRuleToken lv_value_2_0 = null;

        AntlrDatatypeRuleToken lv_inserttype_4_0 = null;

        AntlrDatatypeRuleToken lv_insertvalue_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3207:28: ( (otherlv_0= 'insertvalue' ( (lv_struct_1_0= ruleStructure ) ) ( (lv_value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_inserttype_4_0= ruleType ) ) ( (lv_insertvalue_5_0= ruleType ) ) (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+ ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3208:1: (otherlv_0= 'insertvalue' ( (lv_struct_1_0= ruleStructure ) ) ( (lv_value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_inserttype_4_0= ruleType ) ) ( (lv_insertvalue_5_0= ruleType ) ) (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+ )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3208:1: (otherlv_0= 'insertvalue' ( (lv_struct_1_0= ruleStructure ) ) ( (lv_value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_inserttype_4_0= ruleType ) ) ( (lv_insertvalue_5_0= ruleType ) ) (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+ )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3208:3: otherlv_0= 'insertvalue' ( (lv_struct_1_0= ruleStructure ) ) ( (lv_value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_inserttype_4_0= ruleType ) ) ( (lv_insertvalue_5_0= ruleType ) ) (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+
            {
            otherlv_0=(Token)match(input,63,FOLLOW_63_in_ruleInsertValue6879); 

                	newLeafNode(otherlv_0, grammarAccess.getInsertValueAccess().getInsertvalueKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3212:1: ( (lv_struct_1_0= ruleStructure ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3213:1: (lv_struct_1_0= ruleStructure )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3213:1: (lv_struct_1_0= ruleStructure )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3214:3: lv_struct_1_0= ruleStructure
            {
             
            	        newCompositeNode(grammarAccess.getInsertValueAccess().getStructStructureParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleStructure_in_ruleInsertValue6900);
            lv_struct_1_0=ruleStructure();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertValueRule());
            	        }
                   		set(
                   			current, 
                   			"struct",
                    		lv_struct_1_0, 
                    		"Structure");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3230:2: ( (lv_value_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3231:1: (lv_value_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3231:1: (lv_value_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3232:3: lv_value_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertValueAccess().getValueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertValue6921);
            lv_value_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertValueRule());
            	        }
                   		set(
                   			current, 
                   			"value",
                    		lv_value_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleInsertValue6933); 

                	newLeafNode(otherlv_3, grammarAccess.getInsertValueAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3252:1: ( (lv_inserttype_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3253:1: (lv_inserttype_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3253:1: (lv_inserttype_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3254:3: lv_inserttype_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertValueAccess().getInserttypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertValue6954);
            lv_inserttype_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertValueRule());
            	        }
                   		set(
                   			current, 
                   			"inserttype",
                    		lv_inserttype_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3270:2: ( (lv_insertvalue_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3271:1: (lv_insertvalue_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3271:1: (lv_insertvalue_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3272:3: lv_insertvalue_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertValueAccess().getInsertvalueTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertValue6975);
            lv_insertvalue_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertValueRule());
            	        }
                   		set(
                   			current, 
                   			"insertvalue",
                    		lv_insertvalue_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3288:2: (otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) ) )+
            int cnt118=0;
            loop118:
            do {
                int alt118=2;
                int LA118_0 = input.LA(1);

                if ( (LA118_0==27) ) {
                    alt118=1;
                }


                switch (alt118) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3288:4: otherlv_6= ',' ( (lv_index_7_0= RULE_INT ) )
            	    {
            	    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleInsertValue6988); 

            	        	newLeafNode(otherlv_6, grammarAccess.getInsertValueAccess().getCommaKeyword_6_0());
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3292:1: ( (lv_index_7_0= RULE_INT ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3293:1: (lv_index_7_0= RULE_INT )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3293:1: (lv_index_7_0= RULE_INT )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3294:3: lv_index_7_0= RULE_INT
            	    {
            	    lv_index_7_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleInsertValue7005); 

            	    			newLeafNode(lv_index_7_0, grammarAccess.getInsertValueAccess().getIndexINTTerminalRuleCall_6_1_0()); 
            	    		

            	    	        if (current==null) {
            	    	            current = createModelElement(grammarAccess.getInsertValueRule());
            	    	        }
            	           		addWithLastConsumed(
            	           			current, 
            	           			"index",
            	            		lv_index_7_0, 
            	            		"INT");
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt118 >= 1 ) break loop118;
                        EarlyExitException eee =
                            new EarlyExitException(118, input);
                        throw eee;
                }
                cnt118++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInsertValue"


    // $ANTLR start "entryRuleFence"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3318:1: entryRuleFence returns [EObject current=null] : iv_ruleFence= ruleFence EOF ;
    public final EObject entryRuleFence() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleFence = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3319:2: (iv_ruleFence= ruleFence EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3320:2: iv_ruleFence= ruleFence EOF
            {
             newCompositeNode(grammarAccess.getFenceRule()); 
            pushFollow(FOLLOW_ruleFence_in_entryRuleFence7048);
            iv_ruleFence=ruleFence();

            state._fsp--;

             current =iv_ruleFence; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFence7058); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFence"


    // $ANTLR start "ruleFence"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3327:1: ruleFence returns [EObject current=null] : (otherlv_0= 'fence' (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) ) ) ;
    public final EObject ruleFence() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_ordering_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3330:28: ( (otherlv_0= 'fence' (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3331:1: (otherlv_0= 'fence' (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3331:1: (otherlv_0= 'fence' (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3331:3: otherlv_0= 'fence' (otherlv_1= 'singlethread' )? ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) )
            {
            otherlv_0=(Token)match(input,64,FOLLOW_64_in_ruleFence7095); 

                	newLeafNode(otherlv_0, grammarAccess.getFenceAccess().getFenceKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3335:1: (otherlv_1= 'singlethread' )?
            int alt119=2;
            int LA119_0 = input.LA(1);

            if ( (LA119_0==65) ) {
                alt119=1;
            }
            switch (alt119) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3335:3: otherlv_1= 'singlethread'
                    {
                    otherlv_1=(Token)match(input,65,FOLLOW_65_in_ruleFence7108); 

                        	newLeafNode(otherlv_1, grammarAccess.getFenceAccess().getSinglethreadKeyword_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3339:3: ( (lv_ordering_2_0= ruleATOMIC_ORDERING ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3340:1: (lv_ordering_2_0= ruleATOMIC_ORDERING )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3340:1: (lv_ordering_2_0= ruleATOMIC_ORDERING )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3341:3: lv_ordering_2_0= ruleATOMIC_ORDERING
            {
             
            	        newCompositeNode(grammarAccess.getFenceAccess().getOrderingATOMIC_ORDERINGParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_ruleFence7131);
            lv_ordering_2_0=ruleATOMIC_ORDERING();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getFenceRule());
            	        }
                   		set(
                   			current, 
                   			"ordering",
                    		lv_ordering_2_0, 
                    		"ATOMIC_ORDERING");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFence"


    // $ANTLR start "entryRuleATOMIC_ORDERING"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3365:1: entryRuleATOMIC_ORDERING returns [String current=null] : iv_ruleATOMIC_ORDERING= ruleATOMIC_ORDERING EOF ;
    public final String entryRuleATOMIC_ORDERING() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleATOMIC_ORDERING = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3366:2: (iv_ruleATOMIC_ORDERING= ruleATOMIC_ORDERING EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3367:2: iv_ruleATOMIC_ORDERING= ruleATOMIC_ORDERING EOF
            {
             newCompositeNode(grammarAccess.getATOMIC_ORDERINGRule()); 
            pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_entryRuleATOMIC_ORDERING7168);
            iv_ruleATOMIC_ORDERING=ruleATOMIC_ORDERING();

            state._fsp--;

             current =iv_ruleATOMIC_ORDERING.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleATOMIC_ORDERING7179); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleATOMIC_ORDERING"


    // $ANTLR start "ruleATOMIC_ORDERING"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3374:1: ruleATOMIC_ORDERING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'unordered' | kw= 'monotonic' | kw= 'aquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' ) ;
    public final AntlrDatatypeRuleToken ruleATOMIC_ORDERING() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3377:28: ( (kw= 'unordered' | kw= 'monotonic' | kw= 'aquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3378:1: (kw= 'unordered' | kw= 'monotonic' | kw= 'aquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3378:1: (kw= 'unordered' | kw= 'monotonic' | kw= 'aquire' | kw= 'release' | kw= 'acq_rel' | kw= 'seq_cst' )
            int alt120=6;
            switch ( input.LA(1) ) {
            case 66:
                {
                alt120=1;
                }
                break;
            case 67:
                {
                alt120=2;
                }
                break;
            case 68:
                {
                alt120=3;
                }
                break;
            case 69:
                {
                alt120=4;
                }
                break;
            case 70:
                {
                alt120=5;
                }
                break;
            case 71:
                {
                alt120=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 120, 0, input);

                throw nvae;
            }

            switch (alt120) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3379:2: kw= 'unordered'
                    {
                    kw=(Token)match(input,66,FOLLOW_66_in_ruleATOMIC_ORDERING7217); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getUnorderedKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3386:2: kw= 'monotonic'
                    {
                    kw=(Token)match(input,67,FOLLOW_67_in_ruleATOMIC_ORDERING7236); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getMonotonicKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3393:2: kw= 'aquire'
                    {
                    kw=(Token)match(input,68,FOLLOW_68_in_ruleATOMIC_ORDERING7255); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getAquireKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3400:2: kw= 'release'
                    {
                    kw=(Token)match(input,69,FOLLOW_69_in_ruleATOMIC_ORDERING7274); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getReleaseKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3407:2: kw= 'acq_rel'
                    {
                    kw=(Token)match(input,70,FOLLOW_70_in_ruleATOMIC_ORDERING7293); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getAcq_relKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3414:2: kw= 'seq_cst'
                    {
                    kw=(Token)match(input,71,FOLLOW_71_in_ruleATOMIC_ORDERING7312); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getATOMIC_ORDERINGAccess().getSeq_cstKeyword_5()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleATOMIC_ORDERING"


    // $ANTLR start "entryRuleCmpXchg"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3427:1: entryRuleCmpXchg returns [EObject current=null] : iv_ruleCmpXchg= ruleCmpXchg EOF ;
    public final EObject entryRuleCmpXchg() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCmpXchg = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3428:2: (iv_ruleCmpXchg= ruleCmpXchg EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3429:2: iv_ruleCmpXchg= ruleCmpXchg EOF
            {
             newCompositeNode(grammarAccess.getCmpXchgRule()); 
            pushFollow(FOLLOW_ruleCmpXchg_in_entryRuleCmpXchg7352);
            iv_ruleCmpXchg=ruleCmpXchg();

            state._fsp--;

             current =iv_ruleCmpXchg; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCmpXchg7362); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCmpXchg"


    // $ANTLR start "ruleCmpXchg"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3436:1: ruleCmpXchg returns [EObject current=null] : (otherlv_0= 'cmpxchg' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_adress_3_0= ruleType ) ) otherlv_4= ',' ( (lv_comparetype_5_0= ruleType ) ) ( (lv_comparevalue_6_0= ruleType ) ) otherlv_7= ',' ( (lv_newtype_8_0= ruleType ) ) ( (lv_newvalue_9_0= ruleType ) ) (otherlv_10= 'singlethread' )? ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) ) ) ;
    public final EObject ruleCmpXchg() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_adresstype_2_0 = null;

        AntlrDatatypeRuleToken lv_adress_3_0 = null;

        AntlrDatatypeRuleToken lv_comparetype_5_0 = null;

        AntlrDatatypeRuleToken lv_comparevalue_6_0 = null;

        AntlrDatatypeRuleToken lv_newtype_8_0 = null;

        AntlrDatatypeRuleToken lv_newvalue_9_0 = null;

        AntlrDatatypeRuleToken lv_ordering_11_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3439:28: ( (otherlv_0= 'cmpxchg' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_adress_3_0= ruleType ) ) otherlv_4= ',' ( (lv_comparetype_5_0= ruleType ) ) ( (lv_comparevalue_6_0= ruleType ) ) otherlv_7= ',' ( (lv_newtype_8_0= ruleType ) ) ( (lv_newvalue_9_0= ruleType ) ) (otherlv_10= 'singlethread' )? ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3440:1: (otherlv_0= 'cmpxchg' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_adress_3_0= ruleType ) ) otherlv_4= ',' ( (lv_comparetype_5_0= ruleType ) ) ( (lv_comparevalue_6_0= ruleType ) ) otherlv_7= ',' ( (lv_newtype_8_0= ruleType ) ) ( (lv_newvalue_9_0= ruleType ) ) (otherlv_10= 'singlethread' )? ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3440:1: (otherlv_0= 'cmpxchg' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_adress_3_0= ruleType ) ) otherlv_4= ',' ( (lv_comparetype_5_0= ruleType ) ) ( (lv_comparevalue_6_0= ruleType ) ) otherlv_7= ',' ( (lv_newtype_8_0= ruleType ) ) ( (lv_newvalue_9_0= ruleType ) ) (otherlv_10= 'singlethread' )? ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3440:3: otherlv_0= 'cmpxchg' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_adress_3_0= ruleType ) ) otherlv_4= ',' ( (lv_comparetype_5_0= ruleType ) ) ( (lv_comparevalue_6_0= ruleType ) ) otherlv_7= ',' ( (lv_newtype_8_0= ruleType ) ) ( (lv_newvalue_9_0= ruleType ) ) (otherlv_10= 'singlethread' )? ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) )
            {
            otherlv_0=(Token)match(input,72,FOLLOW_72_in_ruleCmpXchg7399); 

                	newLeafNode(otherlv_0, grammarAccess.getCmpXchgAccess().getCmpxchgKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3444:1: (otherlv_1= 'volatile' )?
            int alt121=2;
            int LA121_0 = input.LA(1);

            if ( (LA121_0==59) ) {
                alt121=1;
            }
            switch (alt121) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3444:3: otherlv_1= 'volatile'
                    {
                    otherlv_1=(Token)match(input,59,FOLLOW_59_in_ruleCmpXchg7412); 

                        	newLeafNode(otherlv_1, grammarAccess.getCmpXchgAccess().getVolatileKeyword_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3448:3: ( (lv_adresstype_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3449:1: (lv_adresstype_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3449:1: (lv_adresstype_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3450:3: lv_adresstype_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getAdresstypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7435);
            lv_adresstype_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"adresstype",
                    		lv_adresstype_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3466:2: ( (lv_adress_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3467:1: (lv_adress_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3467:1: (lv_adress_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3468:3: lv_adress_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getAdressTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7456);
            lv_adress_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"adress",
                    		lv_adress_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleCmpXchg7468); 

                	newLeafNode(otherlv_4, grammarAccess.getCmpXchgAccess().getCommaKeyword_4());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3488:1: ( (lv_comparetype_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3489:1: (lv_comparetype_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3489:1: (lv_comparetype_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3490:3: lv_comparetype_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getComparetypeTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7489);
            lv_comparetype_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"comparetype",
                    		lv_comparetype_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3506:2: ( (lv_comparevalue_6_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3507:1: (lv_comparevalue_6_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3507:1: (lv_comparevalue_6_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3508:3: lv_comparevalue_6_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getComparevalueTypeParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7510);
            lv_comparevalue_6_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"comparevalue",
                    		lv_comparevalue_6_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleCmpXchg7522); 

                	newLeafNode(otherlv_7, grammarAccess.getCmpXchgAccess().getCommaKeyword_7());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3528:1: ( (lv_newtype_8_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3529:1: (lv_newtype_8_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3529:1: (lv_newtype_8_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3530:3: lv_newtype_8_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getNewtypeTypeParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7543);
            lv_newtype_8_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"newtype",
                    		lv_newtype_8_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3546:2: ( (lv_newvalue_9_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3547:1: (lv_newvalue_9_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3547:1: (lv_newvalue_9_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3548:3: lv_newvalue_9_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getNewvalueTypeParserRuleCall_9_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCmpXchg7564);
            lv_newvalue_9_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"newvalue",
                    		lv_newvalue_9_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3564:2: (otherlv_10= 'singlethread' )?
            int alt122=2;
            int LA122_0 = input.LA(1);

            if ( (LA122_0==65) ) {
                alt122=1;
            }
            switch (alt122) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3564:4: otherlv_10= 'singlethread'
                    {
                    otherlv_10=(Token)match(input,65,FOLLOW_65_in_ruleCmpXchg7577); 

                        	newLeafNode(otherlv_10, grammarAccess.getCmpXchgAccess().getSinglethreadKeyword_10());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3568:3: ( (lv_ordering_11_0= ruleATOMIC_ORDERING ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3569:1: (lv_ordering_11_0= ruleATOMIC_ORDERING )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3569:1: (lv_ordering_11_0= ruleATOMIC_ORDERING )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3570:3: lv_ordering_11_0= ruleATOMIC_ORDERING
            {
             
            	        newCompositeNode(grammarAccess.getCmpXchgAccess().getOrderingATOMIC_ORDERINGParserRuleCall_11_0()); 
            	    
            pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_ruleCmpXchg7600);
            lv_ordering_11_0=ruleATOMIC_ORDERING();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCmpXchgRule());
            	        }
                   		set(
                   			current, 
                   			"ordering",
                    		lv_ordering_11_0, 
                    		"ATOMIC_ORDERING");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCmpXchg"


    // $ANTLR start "entryRuleAtomicRMW"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3594:1: entryRuleAtomicRMW returns [EObject current=null] : iv_ruleAtomicRMW= ruleAtomicRMW EOF ;
    public final EObject entryRuleAtomicRMW() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAtomicRMW = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3595:2: (iv_ruleAtomicRMW= ruleAtomicRMW EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3596:2: iv_ruleAtomicRMW= ruleAtomicRMW EOF
            {
             newCompositeNode(grammarAccess.getAtomicRMWRule()); 
            pushFollow(FOLLOW_ruleAtomicRMW_in_entryRuleAtomicRMW7636);
            iv_ruleAtomicRMW=ruleAtomicRMW();

            state._fsp--;

             current =iv_ruleAtomicRMW; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAtomicRMW7646); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAtomicRMW"


    // $ANTLR start "ruleAtomicRMW"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3603:1: ruleAtomicRMW returns [EObject current=null] : (otherlv_0= 'atomicrmw' (otherlv_1= 'volatile' )? ruleBIN_OP ( (lv_adresstype_3_0= ruleType ) ) ( (lv_adress_4_0= ruleType ) ) otherlv_5= ',' ( (lv_optype_6_0= ruleType ) ) ( (lv_opvalue_7_0= ruleType ) ) (otherlv_8= 'singlethread' )? ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) ) ) ;
    public final EObject ruleAtomicRMW() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_5=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_adresstype_3_0 = null;

        AntlrDatatypeRuleToken lv_adress_4_0 = null;

        AntlrDatatypeRuleToken lv_optype_6_0 = null;

        AntlrDatatypeRuleToken lv_opvalue_7_0 = null;

        AntlrDatatypeRuleToken lv_ordering_9_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3606:28: ( (otherlv_0= 'atomicrmw' (otherlv_1= 'volatile' )? ruleBIN_OP ( (lv_adresstype_3_0= ruleType ) ) ( (lv_adress_4_0= ruleType ) ) otherlv_5= ',' ( (lv_optype_6_0= ruleType ) ) ( (lv_opvalue_7_0= ruleType ) ) (otherlv_8= 'singlethread' )? ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3607:1: (otherlv_0= 'atomicrmw' (otherlv_1= 'volatile' )? ruleBIN_OP ( (lv_adresstype_3_0= ruleType ) ) ( (lv_adress_4_0= ruleType ) ) otherlv_5= ',' ( (lv_optype_6_0= ruleType ) ) ( (lv_opvalue_7_0= ruleType ) ) (otherlv_8= 'singlethread' )? ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3607:1: (otherlv_0= 'atomicrmw' (otherlv_1= 'volatile' )? ruleBIN_OP ( (lv_adresstype_3_0= ruleType ) ) ( (lv_adress_4_0= ruleType ) ) otherlv_5= ',' ( (lv_optype_6_0= ruleType ) ) ( (lv_opvalue_7_0= ruleType ) ) (otherlv_8= 'singlethread' )? ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3607:3: otherlv_0= 'atomicrmw' (otherlv_1= 'volatile' )? ruleBIN_OP ( (lv_adresstype_3_0= ruleType ) ) ( (lv_adress_4_0= ruleType ) ) otherlv_5= ',' ( (lv_optype_6_0= ruleType ) ) ( (lv_opvalue_7_0= ruleType ) ) (otherlv_8= 'singlethread' )? ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) )
            {
            otherlv_0=(Token)match(input,73,FOLLOW_73_in_ruleAtomicRMW7683); 

                	newLeafNode(otherlv_0, grammarAccess.getAtomicRMWAccess().getAtomicrmwKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3611:1: (otherlv_1= 'volatile' )?
            int alt123=2;
            int LA123_0 = input.LA(1);

            if ( (LA123_0==59) ) {
                alt123=1;
            }
            switch (alt123) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3611:3: otherlv_1= 'volatile'
                    {
                    otherlv_1=(Token)match(input,59,FOLLOW_59_in_ruleAtomicRMW7696); 

                        	newLeafNode(otherlv_1, grammarAccess.getAtomicRMWAccess().getVolatileKeyword_1());
                        

                    }
                    break;

            }

             
                    newCompositeNode(grammarAccess.getAtomicRMWAccess().getBIN_OPParserRuleCall_2()); 
                
            pushFollow(FOLLOW_ruleBIN_OP_in_ruleAtomicRMW7714);
            ruleBIN_OP();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3623:1: ( (lv_adresstype_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3624:1: (lv_adresstype_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3624:1: (lv_adresstype_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3625:3: lv_adresstype_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAtomicRMWAccess().getAdresstypeTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAtomicRMW7734);
            lv_adresstype_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAtomicRMWRule());
            	        }
                   		set(
                   			current, 
                   			"adresstype",
                    		lv_adresstype_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3641:2: ( (lv_adress_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3642:1: (lv_adress_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3642:1: (lv_adress_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3643:3: lv_adress_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAtomicRMWAccess().getAdressTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAtomicRMW7755);
            lv_adress_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAtomicRMWRule());
            	        }
                   		set(
                   			current, 
                   			"adress",
                    		lv_adress_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleAtomicRMW7767); 

                	newLeafNode(otherlv_5, grammarAccess.getAtomicRMWAccess().getCommaKeyword_5());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3663:1: ( (lv_optype_6_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3664:1: (lv_optype_6_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3664:1: (lv_optype_6_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3665:3: lv_optype_6_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAtomicRMWAccess().getOptypeTypeParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAtomicRMW7788);
            lv_optype_6_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAtomicRMWRule());
            	        }
                   		set(
                   			current, 
                   			"optype",
                    		lv_optype_6_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3681:2: ( (lv_opvalue_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3682:1: (lv_opvalue_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3682:1: (lv_opvalue_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3683:3: lv_opvalue_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getAtomicRMWAccess().getOpvalueTypeParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleAtomicRMW7809);
            lv_opvalue_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAtomicRMWRule());
            	        }
                   		set(
                   			current, 
                   			"opvalue",
                    		lv_opvalue_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3699:2: (otherlv_8= 'singlethread' )?
            int alt124=2;
            int LA124_0 = input.LA(1);

            if ( (LA124_0==65) ) {
                alt124=1;
            }
            switch (alt124) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3699:4: otherlv_8= 'singlethread'
                    {
                    otherlv_8=(Token)match(input,65,FOLLOW_65_in_ruleAtomicRMW7822); 

                        	newLeafNode(otherlv_8, grammarAccess.getAtomicRMWAccess().getSinglethreadKeyword_8());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3703:3: ( (lv_ordering_9_0= ruleATOMIC_ORDERING ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3704:1: (lv_ordering_9_0= ruleATOMIC_ORDERING )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3704:1: (lv_ordering_9_0= ruleATOMIC_ORDERING )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3705:3: lv_ordering_9_0= ruleATOMIC_ORDERING
            {
             
            	        newCompositeNode(grammarAccess.getAtomicRMWAccess().getOrderingATOMIC_ORDERINGParserRuleCall_9_0()); 
            	    
            pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_ruleAtomicRMW7845);
            lv_ordering_9_0=ruleATOMIC_ORDERING();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getAtomicRMWRule());
            	        }
                   		set(
                   			current, 
                   			"ordering",
                    		lv_ordering_9_0, 
                    		"ATOMIC_ORDERING");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAtomicRMW"


    // $ANTLR start "entryRuleBIN_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3729:1: entryRuleBIN_OP returns [String current=null] : iv_ruleBIN_OP= ruleBIN_OP EOF ;
    public final String entryRuleBIN_OP() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleBIN_OP = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3730:2: (iv_ruleBIN_OP= ruleBIN_OP EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3731:2: iv_ruleBIN_OP= ruleBIN_OP EOF
            {
             newCompositeNode(grammarAccess.getBIN_OPRule()); 
            pushFollow(FOLLOW_ruleBIN_OP_in_entryRuleBIN_OP7882);
            iv_ruleBIN_OP=ruleBIN_OP();

            state._fsp--;

             current =iv_ruleBIN_OP.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBIN_OP7893); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBIN_OP"


    // $ANTLR start "ruleBIN_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3738:1: ruleBIN_OP returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' ) ;
    public final AntlrDatatypeRuleToken ruleBIN_OP() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3741:28: ( (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3742:1: (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3742:1: (kw= 'xchg' | kw= 'add' | kw= 'sub' | kw= 'and' | kw= 'nand' | kw= 'or' | kw= 'xor' | kw= 'max' | kw= 'min' | kw= 'umax' | kw= 'umin' )
            int alt125=11;
            switch ( input.LA(1) ) {
            case 74:
                {
                alt125=1;
                }
                break;
            case 75:
                {
                alt125=2;
                }
                break;
            case 76:
                {
                alt125=3;
                }
                break;
            case 77:
                {
                alt125=4;
                }
                break;
            case 78:
                {
                alt125=5;
                }
                break;
            case 79:
                {
                alt125=6;
                }
                break;
            case 80:
                {
                alt125=7;
                }
                break;
            case 81:
                {
                alt125=8;
                }
                break;
            case 82:
                {
                alt125=9;
                }
                break;
            case 83:
                {
                alt125=10;
                }
                break;
            case 84:
                {
                alt125=11;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 125, 0, input);

                throw nvae;
            }

            switch (alt125) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3743:2: kw= 'xchg'
                    {
                    kw=(Token)match(input,74,FOLLOW_74_in_ruleBIN_OP7931); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getXchgKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3750:2: kw= 'add'
                    {
                    kw=(Token)match(input,75,FOLLOW_75_in_ruleBIN_OP7950); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getAddKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3757:2: kw= 'sub'
                    {
                    kw=(Token)match(input,76,FOLLOW_76_in_ruleBIN_OP7969); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getSubKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3764:2: kw= 'and'
                    {
                    kw=(Token)match(input,77,FOLLOW_77_in_ruleBIN_OP7988); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getAndKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3771:2: kw= 'nand'
                    {
                    kw=(Token)match(input,78,FOLLOW_78_in_ruleBIN_OP8007); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getNandKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3778:2: kw= 'or'
                    {
                    kw=(Token)match(input,79,FOLLOW_79_in_ruleBIN_OP8026); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getOrKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3785:2: kw= 'xor'
                    {
                    kw=(Token)match(input,80,FOLLOW_80_in_ruleBIN_OP8045); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getXorKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3792:2: kw= 'max'
                    {
                    kw=(Token)match(input,81,FOLLOW_81_in_ruleBIN_OP8064); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getMaxKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3799:2: kw= 'min'
                    {
                    kw=(Token)match(input,82,FOLLOW_82_in_ruleBIN_OP8083); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getMinKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3806:2: kw= 'umax'
                    {
                    kw=(Token)match(input,83,FOLLOW_83_in_ruleBIN_OP8102); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getUmaxKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3813:2: kw= 'umin'
                    {
                    kw=(Token)match(input,84,FOLLOW_84_in_ruleBIN_OP8121); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getBIN_OPAccess().getUminKeyword_10()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBIN_OP"


    // $ANTLR start "entryRuleLoad"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3826:1: entryRuleLoad returns [EObject current=null] : iv_ruleLoad= ruleLoad EOF ;
    public final EObject entryRuleLoad() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLoad = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3827:2: (iv_ruleLoad= ruleLoad EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3828:2: iv_ruleLoad= ruleLoad EOF
            {
             newCompositeNode(grammarAccess.getLoadRule()); 
            pushFollow(FOLLOW_ruleLoad_in_entryRuleLoad8161);
            iv_ruleLoad=ruleLoad();

            state._fsp--;

             current =iv_ruleLoad; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLoad8171); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLoad"


    // $ANTLR start "ruleLoad"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3835:1: ruleLoad returns [EObject current=null] : ( (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? ) ) ;
    public final EObject ruleLoad() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_5=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_14=null;
        Token otherlv_16=null;
        Token otherlv_17=null;
        Token lv_index_18_0=null;
        AntlrDatatypeRuleToken lv_adresstype_2_0 = null;

        EObject lv_types_3_0 = null;

        AntlrDatatypeRuleToken lv_adress_4_0 = null;

        AntlrDatatypeRuleToken lv_adresstype_11_0 = null;

        AntlrDatatypeRuleToken lv_adress_12_0 = null;

        EObject lv_types_13_0 = null;

        AntlrDatatypeRuleToken lv_ordering_15_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3838:28: ( ( (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3839:1: ( (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3839:1: ( (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? ) )
            int alt135=2;
            int LA135_0 = input.LA(1);

            if ( (LA135_0==85) ) {
                int LA135_1 = input.LA(2);

                if ( (LA135_1==86) ) {
                    alt135=2;
                }
                else if ( ((LA135_1>=RULE_INT && LA135_1<=RULE_VAR_TYPE)||LA135_1==33||(LA135_1>=43 && LA135_1<=47)||LA135_1==59) ) {
                    alt135=1;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 135, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 135, 0, input);

                throw nvae;
            }
            switch (alt135) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3839:2: (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3839:2: (otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3839:4: otherlv_0= 'load' (otherlv_1= 'volatile' )? ( (lv_adresstype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( (lv_adress_4_0= ruleType ) ) (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )*
                    {
                    otherlv_0=(Token)match(input,85,FOLLOW_85_in_ruleLoad8209); 

                        	newLeafNode(otherlv_0, grammarAccess.getLoadAccess().getLoadKeyword_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3843:1: (otherlv_1= 'volatile' )?
                    int alt126=2;
                    int LA126_0 = input.LA(1);

                    if ( (LA126_0==59) ) {
                        alt126=1;
                    }
                    switch (alt126) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3843:3: otherlv_1= 'volatile'
                            {
                            otherlv_1=(Token)match(input,59,FOLLOW_59_in_ruleLoad8222); 

                                	newLeafNode(otherlv_1, grammarAccess.getLoadAccess().getVolatileKeyword_0_1());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3847:3: ( (lv_adresstype_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3848:1: (lv_adresstype_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3848:1: (lv_adresstype_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3849:3: lv_adresstype_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLoadAccess().getAdresstypeTypeParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLoad8245);
                    lv_adresstype_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLoadRule());
                    	        }
                           		set(
                           			current, 
                           			"adresstype",
                            		lv_adresstype_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3865:2: ( (lv_types_3_0= ruleTypeList ) )?
                    int alt127=2;
                    int LA127_0 = input.LA(1);

                    if ( (LA127_0==52) ) {
                        alt127=1;
                    }
                    switch (alt127) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3866:1: (lv_types_3_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3866:1: (lv_types_3_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3867:3: lv_types_3_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getLoadAccess().getTypesTypeListParserRuleCall_0_3_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleLoad8266);
                            lv_types_3_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getLoadRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"types",
                                    		lv_types_3_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3883:3: ( (lv_adress_4_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3884:1: (lv_adress_4_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3884:1: (lv_adress_4_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3885:3: lv_adress_4_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLoadAccess().getAdressTypeParserRuleCall_0_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLoad8288);
                    lv_adress_4_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLoadRule());
                    	        }
                           		set(
                           			current, 
                           			"adress",
                            		lv_adress_4_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3901:2: (otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )*
                    loop130:
                    do {
                        int alt130=2;
                        int LA130_0 = input.LA(1);

                        if ( (LA130_0==27) ) {
                            alt130=1;
                        }


                        switch (alt130) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3901:4: otherlv_5= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ )
                    	    {
                    	    otherlv_5=(Token)match(input,27,FOLLOW_27_in_ruleLoad8301); 

                    	        	newLeafNode(otherlv_5, grammarAccess.getLoadAccess().getCommaKeyword_0_5_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3905:1: ( ruleALIGNMENT | ( ruleMetadataValue )+ )
                    	    int alt129=2;
                    	    int LA129_0 = input.LA(1);

                    	    if ( (LA129_0==87) ) {
                    	        alt129=1;
                    	    }
                    	    else if ( (LA129_0==201||LA129_0==222) ) {
                    	        alt129=2;
                    	    }
                    	    else {
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 129, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt129) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3906:5: ruleALIGNMENT
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getLoadAccess().getALIGNMENTParserRuleCall_0_5_1_0()); 
                    	                
                    	            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleLoad8318);
                    	            ruleALIGNMENT();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3914:6: ( ruleMetadataValue )+
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3914:6: ( ruleMetadataValue )+
                    	            int cnt128=0;
                    	            loop128:
                    	            do {
                    	                int alt128=2;
                    	                int LA128_0 = input.LA(1);

                    	                if ( (LA128_0==201||LA128_0==222) ) {
                    	                    alt128=1;
                    	                }


                    	                switch (alt128) {
                    	            	case 1 :
                    	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3915:5: ruleMetadataValue
                    	            	    {
                    	            	     
                    	            	            newCompositeNode(grammarAccess.getLoadAccess().getMetadataValueParserRuleCall_0_5_1_1()); 
                    	            	        
                    	            	    pushFollow(FOLLOW_ruleMetadataValue_in_ruleLoad8340);
                    	            	    ruleMetadataValue();

                    	            	    state._fsp--;

                    	            	     
                    	            	            afterParserOrEnumRuleCall();
                    	            	        

                    	            	    }
                    	            	    break;

                    	            	default :
                    	            	    if ( cnt128 >= 1 ) break loop128;
                    	                        EarlyExitException eee =
                    	                            new EarlyExitException(128, input);
                    	                        throw eee;
                    	                }
                    	                cnt128++;
                    	            } while (true);


                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop130;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3923:6: (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3923:6: (otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3923:8: otherlv_8= 'load' otherlv_9= 'atomic' (otherlv_10= 'volatile' )? ( (lv_adresstype_11_0= ruleType ) ) ( (lv_adress_12_0= ruleType ) ) ( (lv_types_13_0= ruleTypeList ) )? (otherlv_14= 'singlethread' )? ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) ) (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )?
                    {
                    otherlv_8=(Token)match(input,85,FOLLOW_85_in_ruleLoad8364); 

                        	newLeafNode(otherlv_8, grammarAccess.getLoadAccess().getLoadKeyword_1_0());
                        
                    otherlv_9=(Token)match(input,86,FOLLOW_86_in_ruleLoad8376); 

                        	newLeafNode(otherlv_9, grammarAccess.getLoadAccess().getAtomicKeyword_1_1());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3931:1: (otherlv_10= 'volatile' )?
                    int alt131=2;
                    int LA131_0 = input.LA(1);

                    if ( (LA131_0==59) ) {
                        alt131=1;
                    }
                    switch (alt131) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3931:3: otherlv_10= 'volatile'
                            {
                            otherlv_10=(Token)match(input,59,FOLLOW_59_in_ruleLoad8389); 

                                	newLeafNode(otherlv_10, grammarAccess.getLoadAccess().getVolatileKeyword_1_2());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3935:3: ( (lv_adresstype_11_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3936:1: (lv_adresstype_11_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3936:1: (lv_adresstype_11_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3937:3: lv_adresstype_11_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLoadAccess().getAdresstypeTypeParserRuleCall_1_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLoad8412);
                    lv_adresstype_11_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLoadRule());
                    	        }
                           		set(
                           			current, 
                           			"adresstype",
                            		lv_adresstype_11_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3953:2: ( (lv_adress_12_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3954:1: (lv_adress_12_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3954:1: (lv_adress_12_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3955:3: lv_adress_12_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLoadAccess().getAdressTypeParserRuleCall_1_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLoad8433);
                    lv_adress_12_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLoadRule());
                    	        }
                           		set(
                           			current, 
                           			"adress",
                            		lv_adress_12_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3971:2: ( (lv_types_13_0= ruleTypeList ) )?
                    int alt132=2;
                    int LA132_0 = input.LA(1);

                    if ( (LA132_0==52) ) {
                        alt132=1;
                    }
                    switch (alt132) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3972:1: (lv_types_13_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3972:1: (lv_types_13_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3973:3: lv_types_13_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getLoadAccess().getTypesTypeListParserRuleCall_1_5_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleLoad8454);
                            lv_types_13_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getLoadRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"types",
                                    		lv_types_13_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3989:3: (otherlv_14= 'singlethread' )?
                    int alt133=2;
                    int LA133_0 = input.LA(1);

                    if ( (LA133_0==65) ) {
                        alt133=1;
                    }
                    switch (alt133) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3989:5: otherlv_14= 'singlethread'
                            {
                            otherlv_14=(Token)match(input,65,FOLLOW_65_in_ruleLoad8468); 

                                	newLeafNode(otherlv_14, grammarAccess.getLoadAccess().getSinglethreadKeyword_1_6());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3993:3: ( (lv_ordering_15_0= ruleATOMIC_ORDERING ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3994:1: (lv_ordering_15_0= ruleATOMIC_ORDERING )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3994:1: (lv_ordering_15_0= ruleATOMIC_ORDERING )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:3995:3: lv_ordering_15_0= ruleATOMIC_ORDERING
                    {
                     
                    	        newCompositeNode(grammarAccess.getLoadAccess().getOrderingATOMIC_ORDERINGParserRuleCall_1_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_ruleLoad8491);
                    lv_ordering_15_0=ruleATOMIC_ORDERING();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLoadRule());
                    	        }
                           		set(
                           			current, 
                           			"ordering",
                            		lv_ordering_15_0, 
                            		"ATOMIC_ORDERING");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4011:2: (otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) ) )?
                    int alt134=2;
                    int LA134_0 = input.LA(1);

                    if ( (LA134_0==27) ) {
                        alt134=1;
                    }
                    switch (alt134) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4011:4: otherlv_16= ',' otherlv_17= 'align' ( (lv_index_18_0= RULE_INT ) )
                            {
                            otherlv_16=(Token)match(input,27,FOLLOW_27_in_ruleLoad8504); 

                                	newLeafNode(otherlv_16, grammarAccess.getLoadAccess().getCommaKeyword_1_8_0());
                                
                            otherlv_17=(Token)match(input,87,FOLLOW_87_in_ruleLoad8516); 

                                	newLeafNode(otherlv_17, grammarAccess.getLoadAccess().getAlignKeyword_1_8_1());
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4019:1: ( (lv_index_18_0= RULE_INT ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4020:1: (lv_index_18_0= RULE_INT )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4020:1: (lv_index_18_0= RULE_INT )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4021:3: lv_index_18_0= RULE_INT
                            {
                            lv_index_18_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleLoad8533); 

                            			newLeafNode(lv_index_18_0, grammarAccess.getLoadAccess().getIndexINTTerminalRuleCall_1_8_2_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getLoadRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"index",
                                    		lv_index_18_0, 
                                    		"INT");
                            	    

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLoad"


    // $ANTLR start "entryRuleStore"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4045:1: entryRuleStore returns [EObject current=null] : iv_ruleStore= ruleStore EOF ;
    public final EObject entryRuleStore() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleStore = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4046:2: (iv_ruleStore= ruleStore EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4047:2: iv_ruleStore= ruleStore EOF
            {
             newCompositeNode(grammarAccess.getStoreRule()); 
            pushFollow(FOLLOW_ruleStore_in_entryRuleStore8577);
            iv_ruleStore=ruleStore();

            state._fsp--;

             current =iv_ruleStore; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleStore8587); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleStore"


    // $ANTLR start "ruleStore"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4054:1: ruleStore returns [EObject current=null] : ( (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? ) ) ;
    public final EObject ruleStore() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_11=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_16=null;
        Token otherlv_20=null;
        Token otherlv_24=null;
        Token otherlv_26=null;
        Token otherlv_27=null;
        Token lv_index_28_0=null;
        AntlrDatatypeRuleToken lv_newtype_2_0 = null;

        EObject lv_types_3_0 = null;

        AntlrDatatypeRuleToken lv_newvalue_4_0 = null;

        EObject lv_newelement_5_0 = null;

        AntlrDatatypeRuleToken lv_adresstype_8_0 = null;

        EObject lv_types_9_0 = null;

        AntlrDatatypeRuleToken lv_adress_10_0 = null;

        AntlrDatatypeRuleToken lv_newtype_17_0 = null;

        EObject lv_types_18_0 = null;

        AntlrDatatypeRuleToken lv_newvalue_19_0 = null;

        AntlrDatatypeRuleToken lv_adresstype_21_0 = null;

        EObject lv_types_22_0 = null;

        AntlrDatatypeRuleToken lv_adress_23_0 = null;

        AntlrDatatypeRuleToken lv_ordering_25_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4057:28: ( ( (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4058:1: ( (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4058:1: ( (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* ) | (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? ) )
            int alt148=2;
            int LA148_0 = input.LA(1);

            if ( (LA148_0==88) ) {
                int LA148_1 = input.LA(2);

                if ( ((LA148_1>=RULE_INT && LA148_1<=RULE_VAR_TYPE)||LA148_1==33||(LA148_1>=43 && LA148_1<=47)||LA148_1==59) ) {
                    alt148=1;
                }
                else if ( (LA148_1==86) ) {
                    alt148=2;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 148, 1, input);

                    throw nvae;
                }
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 148, 0, input);

                throw nvae;
            }
            switch (alt148) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4058:2: (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4058:2: (otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )* )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4058:4: otherlv_0= 'store' (otherlv_1= 'volatile' )? ( (lv_newtype_2_0= ruleType ) ) ( (lv_types_3_0= ruleTypeList ) )? ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) ) otherlv_7= ',' ( (lv_adresstype_8_0= ruleType ) ) ( (lv_types_9_0= ruleTypeList ) )? ( (lv_adress_10_0= ruleType ) ) (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )*
                    {
                    otherlv_0=(Token)match(input,88,FOLLOW_88_in_ruleStore8625); 

                        	newLeafNode(otherlv_0, grammarAccess.getStoreAccess().getStoreKeyword_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4062:1: (otherlv_1= 'volatile' )?
                    int alt136=2;
                    int LA136_0 = input.LA(1);

                    if ( (LA136_0==59) ) {
                        alt136=1;
                    }
                    switch (alt136) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4062:3: otherlv_1= 'volatile'
                            {
                            otherlv_1=(Token)match(input,59,FOLLOW_59_in_ruleStore8638); 

                                	newLeafNode(otherlv_1, grammarAccess.getStoreAccess().getVolatileKeyword_0_1());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4066:3: ( (lv_newtype_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4067:1: (lv_newtype_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4067:1: (lv_newtype_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4068:3: lv_newtype_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getNewtypeTypeParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore8661);
                    lv_newtype_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"newtype",
                            		lv_newtype_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4084:2: ( (lv_types_3_0= ruleTypeList ) )?
                    int alt137=2;
                    int LA137_0 = input.LA(1);

                    if ( (LA137_0==52) ) {
                        alt137=1;
                    }
                    switch (alt137) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4085:1: (lv_types_3_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4085:1: (lv_types_3_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4086:3: lv_types_3_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getTypesTypeListParserRuleCall_0_3_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleStore8682);
                            lv_types_3_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"types",
                                    		lv_types_3_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4102:3: ( ( (lv_newvalue_4_0= ruleType ) ) | ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' ) )
                    int alt138=2;
                    int LA138_0 = input.LA(1);

                    if ( ((LA138_0>=RULE_INT && LA138_0<=RULE_VAR_TYPE)||LA138_0==33||(LA138_0>=43 && LA138_0<=47)) ) {
                        alt138=1;
                    }
                    else if ( (LA138_0==60) ) {
                        alt138=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 138, 0, input);

                        throw nvae;
                    }
                    switch (alt138) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4102:4: ( (lv_newvalue_4_0= ruleType ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4102:4: ( (lv_newvalue_4_0= ruleType ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4103:1: (lv_newvalue_4_0= ruleType )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4103:1: (lv_newvalue_4_0= ruleType )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4104:3: lv_newvalue_4_0= ruleType
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getNewvalueTypeParserRuleCall_0_4_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleType_in_ruleStore8705);
                            lv_newvalue_4_0=ruleType();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"newvalue",
                                    		lv_newvalue_4_0, 
                                    		"Type");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4121:6: ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4121:6: ( ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')' )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4121:7: ( (lv_newelement_5_0= ruleGetElementPtr ) ) otherlv_6= ')'
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4121:7: ( (lv_newelement_5_0= ruleGetElementPtr ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4122:1: (lv_newelement_5_0= ruleGetElementPtr )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4122:1: (lv_newelement_5_0= ruleGetElementPtr )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4123:3: lv_newelement_5_0= ruleGetElementPtr
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getNewelementGetElementPtrParserRuleCall_0_4_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleGetElementPtr_in_ruleStore8733);
                            lv_newelement_5_0=ruleGetElementPtr();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"newelement",
                                    		lv_newelement_5_0, 
                                    		"GetElementPtr");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            otherlv_6=(Token)match(input,35,FOLLOW_35_in_ruleStore8745); 

                                	newLeafNode(otherlv_6, grammarAccess.getStoreAccess().getRightParenthesisKeyword_0_4_1_1());
                                

                            }


                            }
                            break;

                    }

                    otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleStore8759); 

                        	newLeafNode(otherlv_7, grammarAccess.getStoreAccess().getCommaKeyword_0_5());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4147:1: ( (lv_adresstype_8_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4148:1: (lv_adresstype_8_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4148:1: (lv_adresstype_8_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4149:3: lv_adresstype_8_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getAdresstypeTypeParserRuleCall_0_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore8780);
                    lv_adresstype_8_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"adresstype",
                            		lv_adresstype_8_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4165:2: ( (lv_types_9_0= ruleTypeList ) )?
                    int alt139=2;
                    int LA139_0 = input.LA(1);

                    if ( (LA139_0==52) ) {
                        alt139=1;
                    }
                    switch (alt139) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4166:1: (lv_types_9_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4166:1: (lv_types_9_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4167:3: lv_types_9_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getTypesTypeListParserRuleCall_0_7_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleStore8801);
                            lv_types_9_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"types",
                                    		lv_types_9_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4183:3: ( (lv_adress_10_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4184:1: (lv_adress_10_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4184:1: (lv_adress_10_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4185:3: lv_adress_10_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getAdressTypeParserRuleCall_0_8_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore8823);
                    lv_adress_10_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"adress",
                            		lv_adress_10_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4201:2: (otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ ) )*
                    loop142:
                    do {
                        int alt142=2;
                        int LA142_0 = input.LA(1);

                        if ( (LA142_0==27) ) {
                            alt142=1;
                        }


                        switch (alt142) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4201:4: otherlv_11= ',' ( ruleALIGNMENT | ( ruleMetadataValue )+ )
                    	    {
                    	    otherlv_11=(Token)match(input,27,FOLLOW_27_in_ruleStore8836); 

                    	        	newLeafNode(otherlv_11, grammarAccess.getStoreAccess().getCommaKeyword_0_9_0());
                    	        
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4205:1: ( ruleALIGNMENT | ( ruleMetadataValue )+ )
                    	    int alt141=2;
                    	    int LA141_0 = input.LA(1);

                    	    if ( (LA141_0==87) ) {
                    	        alt141=1;
                    	    }
                    	    else if ( (LA141_0==201||LA141_0==222) ) {
                    	        alt141=2;
                    	    }
                    	    else {
                    	        NoViableAltException nvae =
                    	            new NoViableAltException("", 141, 0, input);

                    	        throw nvae;
                    	    }
                    	    switch (alt141) {
                    	        case 1 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4206:5: ruleALIGNMENT
                    	            {
                    	             
                    	                    newCompositeNode(grammarAccess.getStoreAccess().getALIGNMENTParserRuleCall_0_9_1_0()); 
                    	                
                    	            pushFollow(FOLLOW_ruleALIGNMENT_in_ruleStore8853);
                    	            ruleALIGNMENT();

                    	            state._fsp--;

                    	             
                    	                    afterParserOrEnumRuleCall();
                    	                

                    	            }
                    	            break;
                    	        case 2 :
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4214:6: ( ruleMetadataValue )+
                    	            {
                    	            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4214:6: ( ruleMetadataValue )+
                    	            int cnt140=0;
                    	            loop140:
                    	            do {
                    	                int alt140=2;
                    	                int LA140_0 = input.LA(1);

                    	                if ( (LA140_0==201||LA140_0==222) ) {
                    	                    alt140=1;
                    	                }


                    	                switch (alt140) {
                    	            	case 1 :
                    	            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4215:5: ruleMetadataValue
                    	            	    {
                    	            	     
                    	            	            newCompositeNode(grammarAccess.getStoreAccess().getMetadataValueParserRuleCall_0_9_1_1()); 
                    	            	        
                    	            	    pushFollow(FOLLOW_ruleMetadataValue_in_ruleStore8875);
                    	            	    ruleMetadataValue();

                    	            	    state._fsp--;

                    	            	     
                    	            	            afterParserOrEnumRuleCall();
                    	            	        

                    	            	    }
                    	            	    break;

                    	            	default :
                    	            	    if ( cnt140 >= 1 ) break loop140;
                    	                        EarlyExitException eee =
                    	                            new EarlyExitException(140, input);
                    	                        throw eee;
                    	                }
                    	                cnt140++;
                    	            } while (true);


                    	            }
                    	            break;

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop142;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4223:6: (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4223:6: (otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4223:8: otherlv_14= 'store' otherlv_15= 'atomic' (otherlv_16= 'volatile' )? ( (lv_newtype_17_0= ruleType ) ) ( (lv_types_18_0= ruleTypeList ) )? ( (lv_newvalue_19_0= ruleType ) ) otherlv_20= ',' ( (lv_adresstype_21_0= ruleType ) ) ( (lv_types_22_0= ruleTypeList ) )? ( (lv_adress_23_0= ruleType ) ) (otherlv_24= 'singlethread' )? ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) ) (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )?
                    {
                    otherlv_14=(Token)match(input,88,FOLLOW_88_in_ruleStore8899); 

                        	newLeafNode(otherlv_14, grammarAccess.getStoreAccess().getStoreKeyword_1_0());
                        
                    otherlv_15=(Token)match(input,86,FOLLOW_86_in_ruleStore8911); 

                        	newLeafNode(otherlv_15, grammarAccess.getStoreAccess().getAtomicKeyword_1_1());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4231:1: (otherlv_16= 'volatile' )?
                    int alt143=2;
                    int LA143_0 = input.LA(1);

                    if ( (LA143_0==59) ) {
                        alt143=1;
                    }
                    switch (alt143) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4231:3: otherlv_16= 'volatile'
                            {
                            otherlv_16=(Token)match(input,59,FOLLOW_59_in_ruleStore8924); 

                                	newLeafNode(otherlv_16, grammarAccess.getStoreAccess().getVolatileKeyword_1_2());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4235:3: ( (lv_newtype_17_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4236:1: (lv_newtype_17_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4236:1: (lv_newtype_17_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4237:3: lv_newtype_17_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getNewtypeTypeParserRuleCall_1_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore8947);
                    lv_newtype_17_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"newtype",
                            		lv_newtype_17_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4253:2: ( (lv_types_18_0= ruleTypeList ) )?
                    int alt144=2;
                    int LA144_0 = input.LA(1);

                    if ( (LA144_0==52) ) {
                        alt144=1;
                    }
                    switch (alt144) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4254:1: (lv_types_18_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4254:1: (lv_types_18_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4255:3: lv_types_18_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getTypesTypeListParserRuleCall_1_4_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleStore8968);
                            lv_types_18_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"types",
                                    		lv_types_18_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4271:3: ( (lv_newvalue_19_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4272:1: (lv_newvalue_19_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4272:1: (lv_newvalue_19_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4273:3: lv_newvalue_19_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getNewvalueTypeParserRuleCall_1_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore8990);
                    lv_newvalue_19_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"newvalue",
                            		lv_newvalue_19_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_20=(Token)match(input,27,FOLLOW_27_in_ruleStore9002); 

                        	newLeafNode(otherlv_20, grammarAccess.getStoreAccess().getCommaKeyword_1_6());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4293:1: ( (lv_adresstype_21_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4294:1: (lv_adresstype_21_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4294:1: (lv_adresstype_21_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4295:3: lv_adresstype_21_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getAdresstypeTypeParserRuleCall_1_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore9023);
                    lv_adresstype_21_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"adresstype",
                            		lv_adresstype_21_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4311:2: ( (lv_types_22_0= ruleTypeList ) )?
                    int alt145=2;
                    int LA145_0 = input.LA(1);

                    if ( (LA145_0==52) ) {
                        alt145=1;
                    }
                    switch (alt145) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4312:1: (lv_types_22_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4312:1: (lv_types_22_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4313:3: lv_types_22_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getStoreAccess().getTypesTypeListParserRuleCall_1_8_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleStore9044);
                            lv_types_22_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getStoreRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"types",
                                    		lv_types_22_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4329:3: ( (lv_adress_23_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4330:1: (lv_adress_23_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4330:1: (lv_adress_23_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4331:3: lv_adress_23_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getAdressTypeParserRuleCall_1_9_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleStore9066);
                    lv_adress_23_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"adress",
                            		lv_adress_23_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4347:2: (otherlv_24= 'singlethread' )?
                    int alt146=2;
                    int LA146_0 = input.LA(1);

                    if ( (LA146_0==65) ) {
                        alt146=1;
                    }
                    switch (alt146) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4347:4: otherlv_24= 'singlethread'
                            {
                            otherlv_24=(Token)match(input,65,FOLLOW_65_in_ruleStore9079); 

                                	newLeafNode(otherlv_24, grammarAccess.getStoreAccess().getSinglethreadKeyword_1_10());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4351:3: ( (lv_ordering_25_0= ruleATOMIC_ORDERING ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4352:1: (lv_ordering_25_0= ruleATOMIC_ORDERING )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4352:1: (lv_ordering_25_0= ruleATOMIC_ORDERING )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4353:3: lv_ordering_25_0= ruleATOMIC_ORDERING
                    {
                     
                    	        newCompositeNode(grammarAccess.getStoreAccess().getOrderingATOMIC_ORDERINGParserRuleCall_1_11_0()); 
                    	    
                    pushFollow(FOLLOW_ruleATOMIC_ORDERING_in_ruleStore9102);
                    lv_ordering_25_0=ruleATOMIC_ORDERING();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getStoreRule());
                    	        }
                           		set(
                           			current, 
                           			"ordering",
                            		lv_ordering_25_0, 
                            		"ATOMIC_ORDERING");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4369:2: (otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) ) )?
                    int alt147=2;
                    int LA147_0 = input.LA(1);

                    if ( (LA147_0==27) ) {
                        alt147=1;
                    }
                    switch (alt147) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4369:4: otherlv_26= ',' otherlv_27= 'align' ( (lv_index_28_0= RULE_INT ) )
                            {
                            otherlv_26=(Token)match(input,27,FOLLOW_27_in_ruleStore9115); 

                                	newLeafNode(otherlv_26, grammarAccess.getStoreAccess().getCommaKeyword_1_12_0());
                                
                            otherlv_27=(Token)match(input,87,FOLLOW_87_in_ruleStore9127); 

                                	newLeafNode(otherlv_27, grammarAccess.getStoreAccess().getAlignKeyword_1_12_1());
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4377:1: ( (lv_index_28_0= RULE_INT ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4378:1: (lv_index_28_0= RULE_INT )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4378:1: (lv_index_28_0= RULE_INT )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4379:3: lv_index_28_0= RULE_INT
                            {
                            lv_index_28_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleStore9144); 

                            			newLeafNode(lv_index_28_0, grammarAccess.getStoreAccess().getIndexINTTerminalRuleCall_1_12_2_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getStoreRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"index",
                                    		lv_index_28_0, 
                                    		"INT");
                            	    

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleStore"


    // $ANTLR start "entryRuleCall"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4403:1: entryRuleCall returns [EObject current=null] : iv_ruleCall= ruleCall EOF ;
    public final EObject entryRuleCall() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCall = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4404:2: (iv_ruleCall= ruleCall EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4405:2: iv_ruleCall= ruleCall EOF
            {
             newCompositeNode(grammarAccess.getCallRule()); 
            pushFollow(FOLLOW_ruleCall_in_entryRuleCall9188);
            iv_ruleCall=ruleCall();

            state._fsp--;

             current =iv_ruleCall; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCall9198); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCall"


    // $ANTLR start "ruleCall"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4412:1: ruleCall returns [EObject current=null] : ( (otherlv_0= 'tail' )? otherlv_1= 'call' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_adresstype_4_0= ruleType ) ) ( (lv_adress_5_0= ruleType ) ) ( (lv_pList_6_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* ) ;
    public final EObject ruleCall() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_adresstype_4_0 = null;

        AntlrDatatypeRuleToken lv_adress_5_0 = null;

        EObject lv_pList_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4415:28: ( ( (otherlv_0= 'tail' )? otherlv_1= 'call' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_adresstype_4_0= ruleType ) ) ( (lv_adress_5_0= ruleType ) ) ( (lv_pList_6_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4416:1: ( (otherlv_0= 'tail' )? otherlv_1= 'call' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_adresstype_4_0= ruleType ) ) ( (lv_adress_5_0= ruleType ) ) ( (lv_pList_6_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4416:1: ( (otherlv_0= 'tail' )? otherlv_1= 'call' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_adresstype_4_0= ruleType ) ) ( (lv_adress_5_0= ruleType ) ) ( (lv_pList_6_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4416:2: (otherlv_0= 'tail' )? otherlv_1= 'call' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_adresstype_4_0= ruleType ) ) ( (lv_adress_5_0= ruleType ) ) ( (lv_pList_6_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )*
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4416:2: (otherlv_0= 'tail' )?
            int alt149=2;
            int LA149_0 = input.LA(1);

            if ( (LA149_0==89) ) {
                alt149=1;
            }
            switch (alt149) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4416:4: otherlv_0= 'tail'
                    {
                    otherlv_0=(Token)match(input,89,FOLLOW_89_in_ruleCall9236); 

                        	newLeafNode(otherlv_0, grammarAccess.getCallAccess().getTailKeyword_0());
                        

                    }
                    break;

            }

            otherlv_1=(Token)match(input,90,FOLLOW_90_in_ruleCall9250); 

                	newLeafNode(otherlv_1, grammarAccess.getCallAccess().getCallKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4424:1: ( ruleCallingConv )?
            int alt150=2;
            int LA150_0 = input.LA(1);

            if ( ((LA150_0>=100 && LA150_0<=114)) ) {
                alt150=1;
            }
            switch (alt150) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4425:5: ruleCallingConv
                    {
                     
                            newCompositeNode(grammarAccess.getCallAccess().getCallingConvParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleCallingConv_in_ruleCall9267);
                    ruleCallingConv();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4432:3: ( ruleRETURN_ATTRIBUTES )?
            int alt151=2;
            int LA151_0 = input.LA(1);

            if ( ((LA151_0>=91 && LA151_0<=98)) ) {
                alt151=1;
            }
            switch (alt151) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4433:5: ruleRETURN_ATTRIBUTES
                    {
                     
                            newCompositeNode(grammarAccess.getCallAccess().getRETURN_ATTRIBUTESParserRuleCall_3()); 
                        
                    pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleCall9285);
                    ruleRETURN_ATTRIBUTES();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4440:3: ( (lv_adresstype_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4441:1: (lv_adresstype_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4441:1: (lv_adresstype_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4442:3: lv_adresstype_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCallAccess().getAdresstypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCall9307);
            lv_adresstype_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCallRule());
            	        }
                   		set(
                   			current, 
                   			"adresstype",
                    		lv_adresstype_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4458:2: ( (lv_adress_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4459:1: (lv_adress_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4459:1: (lv_adress_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4460:3: lv_adress_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getCallAccess().getAdressTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleCall9328);
            lv_adress_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCallRule());
            	        }
                   		set(
                   			current, 
                   			"adress",
                    		lv_adress_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4476:2: ( (lv_pList_6_0= ruleParameterList ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4477:1: (lv_pList_6_0= ruleParameterList )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4477:1: (lv_pList_6_0= ruleParameterList )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4478:3: lv_pList_6_0= ruleParameterList
            {
             
            	        newCompositeNode(grammarAccess.getCallAccess().getPListParameterListParserRuleCall_6_0()); 
            	    
            pushFollow(FOLLOW_ruleParameterList_in_ruleCall9349);
            lv_pList_6_0=ruleParameterList();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getCallRule());
            	        }
                   		set(
                   			current, 
                   			"pList",
                    		lv_pList_6_0, 
                    		"ParameterList");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4494:2: ( ruleFUNCTION_ATTRIBUTES )*
            loop152:
            do {
                int alt152=2;
                int LA152_0 = input.LA(1);

                if ( ((LA152_0>=115 && LA152_0<=132)) ) {
                    alt152=1;
                }


                switch (alt152) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4495:5: ruleFUNCTION_ATTRIBUTES
            	    {
            	     
            	            newCompositeNode(grammarAccess.getCallAccess().getFUNCTION_ATTRIBUTESParserRuleCall_7()); 
            	        
            	    pushFollow(FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleCall9366);
            	    ruleFUNCTION_ATTRIBUTES();

            	    state._fsp--;

            	     
            	            afterParserOrEnumRuleCall();
            	        

            	    }
            	    break;

            	default :
            	    break loop152;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCall"


    // $ANTLR start "entryRuleRETURN_ATTRIBUTES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4510:1: entryRuleRETURN_ATTRIBUTES returns [String current=null] : iv_ruleRETURN_ATTRIBUTES= ruleRETURN_ATTRIBUTES EOF ;
    public final String entryRuleRETURN_ATTRIBUTES() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleRETURN_ATTRIBUTES = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4511:2: (iv_ruleRETURN_ATTRIBUTES= ruleRETURN_ATTRIBUTES EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4512:2: iv_ruleRETURN_ATTRIBUTES= ruleRETURN_ATTRIBUTES EOF
            {
             newCompositeNode(grammarAccess.getRETURN_ATTRIBUTESRule()); 
            pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_entryRuleRETURN_ATTRIBUTES9404);
            iv_ruleRETURN_ATTRIBUTES=ruleRETURN_ATTRIBUTES();

            state._fsp--;

             current =iv_ruleRETURN_ATTRIBUTES.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRETURN_ATTRIBUTES9415); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRETURN_ATTRIBUTES"


    // $ANTLR start "ruleRETURN_ATTRIBUTES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4519:1: ruleRETURN_ATTRIBUTES returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | kw= 'byval' | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' ) ;
    public final AntlrDatatypeRuleToken ruleRETURN_ATTRIBUTES() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4522:28: ( (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | kw= 'byval' | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4523:1: (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | kw= 'byval' | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4523:1: (kw= 'zeroext' | kw= 'signext' | kw= 'inreg' | kw= 'byval' | kw= 'sret' | kw= 'noalias' | kw= 'nocapture' | kw= 'nest' )
            int alt153=8;
            switch ( input.LA(1) ) {
            case 91:
                {
                alt153=1;
                }
                break;
            case 92:
                {
                alt153=2;
                }
                break;
            case 93:
                {
                alt153=3;
                }
                break;
            case 94:
                {
                alt153=4;
                }
                break;
            case 95:
                {
                alt153=5;
                }
                break;
            case 96:
                {
                alt153=6;
                }
                break;
            case 97:
                {
                alt153=7;
                }
                break;
            case 98:
                {
                alt153=8;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 153, 0, input);

                throw nvae;
            }

            switch (alt153) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4524:2: kw= 'zeroext'
                    {
                    kw=(Token)match(input,91,FOLLOW_91_in_ruleRETURN_ATTRIBUTES9453); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getZeroextKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4531:2: kw= 'signext'
                    {
                    kw=(Token)match(input,92,FOLLOW_92_in_ruleRETURN_ATTRIBUTES9472); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getSignextKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4538:2: kw= 'inreg'
                    {
                    kw=(Token)match(input,93,FOLLOW_93_in_ruleRETURN_ATTRIBUTES9491); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getInregKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4545:2: kw= 'byval'
                    {
                    kw=(Token)match(input,94,FOLLOW_94_in_ruleRETURN_ATTRIBUTES9510); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getByvalKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4552:2: kw= 'sret'
                    {
                    kw=(Token)match(input,95,FOLLOW_95_in_ruleRETURN_ATTRIBUTES9529); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getSretKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4559:2: kw= 'noalias'
                    {
                    kw=(Token)match(input,96,FOLLOW_96_in_ruleRETURN_ATTRIBUTES9548); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getNoaliasKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4566:2: kw= 'nocapture'
                    {
                    kw=(Token)match(input,97,FOLLOW_97_in_ruleRETURN_ATTRIBUTES9567); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getNocaptureKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4573:2: kw= 'nest'
                    {
                    kw=(Token)match(input,98,FOLLOW_98_in_ruleRETURN_ATTRIBUTES9586); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getRETURN_ATTRIBUTESAccess().getNestKeyword_7()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRETURN_ATTRIBUTES"


    // $ANTLR start "entryRuleAlloc"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4586:1: entryRuleAlloc returns [EObject current=null] : iv_ruleAlloc= ruleAlloc EOF ;
    public final EObject entryRuleAlloc() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAlloc = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4587:2: (iv_ruleAlloc= ruleAlloc EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4588:2: iv_ruleAlloc= ruleAlloc EOF
            {
             newCompositeNode(grammarAccess.getAllocRule()); 
            pushFollow(FOLLOW_ruleAlloc_in_entryRuleAlloc9626);
            iv_ruleAlloc=ruleAlloc();

            state._fsp--;

             current =iv_ruleAlloc; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleAlloc9636); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAlloc"


    // $ANTLR start "ruleAlloc"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4595:1: ruleAlloc returns [EObject current=null] : (otherlv_0= 'alloca' ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) ) (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )? (otherlv_7= ',' ruleALIGNMENT )? ) ;
    public final EObject ruleAlloc() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_type_1_1=null;
        Token lv_type_1_2=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_type_2_0 = null;

        EObject lv_typelist_3_0 = null;

        AntlrDatatypeRuleToken lv_numelementstype_5_0 = null;

        AntlrDatatypeRuleToken lv_numelementsvalue_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4598:28: ( (otherlv_0= 'alloca' ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) ) (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )? (otherlv_7= ',' ruleALIGNMENT )? ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4599:1: (otherlv_0= 'alloca' ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) ) (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )? (otherlv_7= ',' ruleALIGNMENT )? )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4599:1: (otherlv_0= 'alloca' ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) ) (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )? (otherlv_7= ',' ruleALIGNMENT )? )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4599:3: otherlv_0= 'alloca' ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) ) (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )? (otherlv_7= ',' ruleALIGNMENT )?
            {
            otherlv_0=(Token)match(input,99,FOLLOW_99_in_ruleAlloc9673); 

                	newLeafNode(otherlv_0, grammarAccess.getAllocAccess().getAllocaKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4603:1: ( ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) ) | ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) ) )
            int alt155=2;
            int LA155_0 = input.LA(1);

            if ( ((LA155_0>=RULE_INTEGER && LA155_0<=RULE_VAR_TYPE)) ) {
                alt155=1;
            }
            else if ( (LA155_0==33||(LA155_0>=43 && LA155_0<=47)) ) {
                alt155=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 155, 0, input);

                throw nvae;
            }
            switch (alt155) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4603:2: ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4603:2: ( ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4604:1: ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4604:1: ( (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4605:1: (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4605:1: (lv_type_1_1= RULE_VAR_TYPE | lv_type_1_2= RULE_INTEGER )
                    int alt154=2;
                    int LA154_0 = input.LA(1);

                    if ( (LA154_0==RULE_VAR_TYPE) ) {
                        alt154=1;
                    }
                    else if ( (LA154_0==RULE_INTEGER) ) {
                        alt154=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 154, 0, input);

                        throw nvae;
                    }
                    switch (alt154) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4606:3: lv_type_1_1= RULE_VAR_TYPE
                            {
                            lv_type_1_1=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleAlloc9693); 

                            			newLeafNode(lv_type_1_1, grammarAccess.getAllocAccess().getTypeVAR_TYPETerminalRuleCall_1_0_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getAllocRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"type",
                                    		lv_type_1_1, 
                                    		"VAR_TYPE");
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4621:8: lv_type_1_2= RULE_INTEGER
                            {
                            lv_type_1_2=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleAlloc9713); 

                            			newLeafNode(lv_type_1_2, grammarAccess.getAllocAccess().getTypeINTEGERTerminalRuleCall_1_0_0_1()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getAllocRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"type",
                                    		lv_type_1_2, 
                                    		"INTEGER");
                            	    

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4640:6: ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4640:6: ( ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4640:7: ( (lv_type_2_0= rulePrimitive ) ) ( (lv_typelist_3_0= ruleTypeList ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4640:7: ( (lv_type_2_0= rulePrimitive ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4641:1: (lv_type_2_0= rulePrimitive )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4641:1: (lv_type_2_0= rulePrimitive )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4642:3: lv_type_2_0= rulePrimitive
                    {
                     
                    	        newCompositeNode(grammarAccess.getAllocAccess().getTypePrimitiveParserRuleCall_1_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulePrimitive_in_ruleAlloc9749);
                    lv_type_2_0=rulePrimitive();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAllocRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_2_0, 
                            		"Primitive");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4658:2: ( (lv_typelist_3_0= ruleTypeList ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4659:1: (lv_typelist_3_0= ruleTypeList )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4659:1: (lv_typelist_3_0= ruleTypeList )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4660:3: lv_typelist_3_0= ruleTypeList
                    {
                     
                    	        newCompositeNode(grammarAccess.getAllocAccess().getTypelistTypeListParserRuleCall_1_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleTypeList_in_ruleAlloc9770);
                    lv_typelist_3_0=ruleTypeList();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAllocRule());
                    	        }
                           		set(
                           			current, 
                           			"typelist",
                            		lv_typelist_3_0, 
                            		"TypeList");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4676:4: (otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) ) )?
            int alt156=2;
            int LA156_0 = input.LA(1);

            if ( (LA156_0==27) ) {
                int LA156_1 = input.LA(2);

                if ( ((LA156_1>=RULE_INT && LA156_1<=RULE_VAR_TYPE)||LA156_1==33||(LA156_1>=43 && LA156_1<=47)) ) {
                    alt156=1;
                }
            }
            switch (alt156) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4676:6: otherlv_4= ',' ( (lv_numelementstype_5_0= ruleType ) ) ( (lv_numelementsvalue_6_0= ruleType ) )
                    {
                    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleAlloc9785); 

                        	newLeafNode(otherlv_4, grammarAccess.getAllocAccess().getCommaKeyword_2_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4680:1: ( (lv_numelementstype_5_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4681:1: (lv_numelementstype_5_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4681:1: (lv_numelementstype_5_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4682:3: lv_numelementstype_5_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getAllocAccess().getNumelementstypeTypeParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleAlloc9806);
                    lv_numelementstype_5_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAllocRule());
                    	        }
                           		set(
                           			current, 
                           			"numelementstype",
                            		lv_numelementstype_5_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4698:2: ( (lv_numelementsvalue_6_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4699:1: (lv_numelementsvalue_6_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4699:1: (lv_numelementsvalue_6_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4700:3: lv_numelementsvalue_6_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getAllocAccess().getNumelementsvalueTypeParserRuleCall_2_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleAlloc9827);
                    lv_numelementsvalue_6_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getAllocRule());
                    	        }
                           		set(
                           			current, 
                           			"numelementsvalue",
                            		lv_numelementsvalue_6_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4716:4: (otherlv_7= ',' ruleALIGNMENT )?
            int alt157=2;
            int LA157_0 = input.LA(1);

            if ( (LA157_0==27) ) {
                alt157=1;
            }
            switch (alt157) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4716:6: otherlv_7= ',' ruleALIGNMENT
                    {
                    otherlv_7=(Token)match(input,27,FOLLOW_27_in_ruleAlloc9842); 

                        	newLeafNode(otherlv_7, grammarAccess.getAllocAccess().getCommaKeyword_3_0());
                        
                     
                            newCompositeNode(grammarAccess.getAllocAccess().getALIGNMENTParserRuleCall_3_1()); 
                        
                    pushFollow(FOLLOW_ruleALIGNMENT_in_ruleAlloc9858);
                    ruleALIGNMENT();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAlloc"


    // $ANTLR start "entryRuleCallingConv"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4736:1: entryRuleCallingConv returns [String current=null] : iv_ruleCallingConv= ruleCallingConv EOF ;
    public final String entryRuleCallingConv() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCallingConv = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4737:2: (iv_ruleCallingConv= ruleCallingConv EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4738:2: iv_ruleCallingConv= ruleCallingConv EOF
            {
             newCompositeNode(grammarAccess.getCallingConvRule()); 
            pushFollow(FOLLOW_ruleCallingConv_in_entryRuleCallingConv9896);
            iv_ruleCallingConv=ruleCallingConv();

            state._fsp--;

             current =iv_ruleCallingConv.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCallingConv9907); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCallingConv"


    // $ANTLR start "ruleCallingConv"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4745:1: ruleCallingConv returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'ccc' | kw= 'fastcc' | kw= 'coldcc' | kw= 'x86_stdcallcc' | kw= 'x86_fastcallcc' | kw= 'x86_thiscallcc' | kw= 'arm_apcscc' | kw= 'arm_aapcscc' | kw= 'arm_aapcs_vfpcc' | kw= 'msp430_intrcc' | kw= 'ptx_kernel' | kw= 'ptx_device' | kw= 'spir_func' | kw= 'spir_kernel' | (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT ) ) ;
    public final AntlrDatatypeRuleToken ruleCallingConv() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_INT_16=null;
        Token this_INT_18=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4748:28: ( (kw= 'ccc' | kw= 'fastcc' | kw= 'coldcc' | kw= 'x86_stdcallcc' | kw= 'x86_fastcallcc' | kw= 'x86_thiscallcc' | kw= 'arm_apcscc' | kw= 'arm_aapcscc' | kw= 'arm_aapcs_vfpcc' | kw= 'msp430_intrcc' | kw= 'ptx_kernel' | kw= 'ptx_device' | kw= 'spir_func' | kw= 'spir_kernel' | (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4749:1: (kw= 'ccc' | kw= 'fastcc' | kw= 'coldcc' | kw= 'x86_stdcallcc' | kw= 'x86_fastcallcc' | kw= 'x86_thiscallcc' | kw= 'arm_apcscc' | kw= 'arm_aapcscc' | kw= 'arm_aapcs_vfpcc' | kw= 'msp430_intrcc' | kw= 'ptx_kernel' | kw= 'ptx_device' | kw= 'spir_func' | kw= 'spir_kernel' | (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4749:1: (kw= 'ccc' | kw= 'fastcc' | kw= 'coldcc' | kw= 'x86_stdcallcc' | kw= 'x86_fastcallcc' | kw= 'x86_thiscallcc' | kw= 'arm_apcscc' | kw= 'arm_aapcscc' | kw= 'arm_aapcs_vfpcc' | kw= 'msp430_intrcc' | kw= 'ptx_kernel' | kw= 'ptx_device' | kw= 'spir_func' | kw= 'spir_kernel' | (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT ) )
            int alt158=15;
            switch ( input.LA(1) ) {
            case 100:
                {
                alt158=1;
                }
                break;
            case 101:
                {
                alt158=2;
                }
                break;
            case 102:
                {
                alt158=3;
                }
                break;
            case 103:
                {
                alt158=4;
                }
                break;
            case 104:
                {
                alt158=5;
                }
                break;
            case 105:
                {
                alt158=6;
                }
                break;
            case 106:
                {
                alt158=7;
                }
                break;
            case 107:
                {
                alt158=8;
                }
                break;
            case 108:
                {
                alt158=9;
                }
                break;
            case 109:
                {
                alt158=10;
                }
                break;
            case 110:
                {
                alt158=11;
                }
                break;
            case 111:
                {
                alt158=12;
                }
                break;
            case 112:
                {
                alt158=13;
                }
                break;
            case 113:
                {
                alt158=14;
                }
                break;
            case 114:
                {
                alt158=15;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 158, 0, input);

                throw nvae;
            }

            switch (alt158) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4750:2: kw= 'ccc'
                    {
                    kw=(Token)match(input,100,FOLLOW_100_in_ruleCallingConv9945); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getCccKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4757:2: kw= 'fastcc'
                    {
                    kw=(Token)match(input,101,FOLLOW_101_in_ruleCallingConv9964); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getFastccKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4764:2: kw= 'coldcc'
                    {
                    kw=(Token)match(input,102,FOLLOW_102_in_ruleCallingConv9983); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getColdccKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4771:2: kw= 'x86_stdcallcc'
                    {
                    kw=(Token)match(input,103,FOLLOW_103_in_ruleCallingConv10002); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getX86_stdcallccKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4778:2: kw= 'x86_fastcallcc'
                    {
                    kw=(Token)match(input,104,FOLLOW_104_in_ruleCallingConv10021); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getX86_fastcallccKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4785:2: kw= 'x86_thiscallcc'
                    {
                    kw=(Token)match(input,105,FOLLOW_105_in_ruleCallingConv10040); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getX86_thiscallccKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4792:2: kw= 'arm_apcscc'
                    {
                    kw=(Token)match(input,106,FOLLOW_106_in_ruleCallingConv10059); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getArm_apcsccKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4799:2: kw= 'arm_aapcscc'
                    {
                    kw=(Token)match(input,107,FOLLOW_107_in_ruleCallingConv10078); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getArm_aapcsccKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4806:2: kw= 'arm_aapcs_vfpcc'
                    {
                    kw=(Token)match(input,108,FOLLOW_108_in_ruleCallingConv10097); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getArm_aapcs_vfpccKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4813:2: kw= 'msp430_intrcc'
                    {
                    kw=(Token)match(input,109,FOLLOW_109_in_ruleCallingConv10116); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getMsp430_intrccKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4820:2: kw= 'ptx_kernel'
                    {
                    kw=(Token)match(input,110,FOLLOW_110_in_ruleCallingConv10135); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getPtx_kernelKeyword_10()); 
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4827:2: kw= 'ptx_device'
                    {
                    kw=(Token)match(input,111,FOLLOW_111_in_ruleCallingConv10154); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getPtx_deviceKeyword_11()); 
                        

                    }
                    break;
                case 13 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4834:2: kw= 'spir_func'
                    {
                    kw=(Token)match(input,112,FOLLOW_112_in_ruleCallingConv10173); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getSpir_funcKeyword_12()); 
                        

                    }
                    break;
                case 14 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4841:2: kw= 'spir_kernel'
                    {
                    kw=(Token)match(input,113,FOLLOW_113_in_ruleCallingConv10192); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getSpir_kernelKeyword_13()); 
                        

                    }
                    break;
                case 15 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4847:6: (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4847:6: (kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4848:2: kw= 'cc' kw= '<' this_INT_16= RULE_INT kw= '>' this_INT_18= RULE_INT
                    {
                    kw=(Token)match(input,114,FOLLOW_114_in_ruleCallingConv10212); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getCcKeyword_14_0()); 
                        
                    kw=(Token)match(input,40,FOLLOW_40_in_ruleCallingConv10225); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getLessThanSignKeyword_14_1()); 
                        
                    this_INT_16=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleCallingConv10240); 

                    		current.merge(this_INT_16);
                        
                     
                        newLeafNode(this_INT_16, grammarAccess.getCallingConvAccess().getINTTerminalRuleCall_14_2()); 
                        
                    kw=(Token)match(input,41,FOLLOW_41_in_ruleCallingConv10258); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCallingConvAccess().getGreaterThanSignKeyword_14_3()); 
                        
                    this_INT_18=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleCallingConv10273); 

                    		current.merge(this_INT_18);
                        
                     
                        newLeafNode(this_INT_18, grammarAccess.getCallingConvAccess().getINTTerminalRuleCall_14_4()); 
                        

                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCallingConv"


    // $ANTLR start "entryRuleFUNCTION_ATTRIBUTES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4887:1: entryRuleFUNCTION_ATTRIBUTES returns [String current=null] : iv_ruleFUNCTION_ATTRIBUTES= ruleFUNCTION_ATTRIBUTES EOF ;
    public final String entryRuleFUNCTION_ATTRIBUTES() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleFUNCTION_ATTRIBUTES = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4888:2: (iv_ruleFUNCTION_ATTRIBUTES= ruleFUNCTION_ATTRIBUTES EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4889:2: iv_ruleFUNCTION_ATTRIBUTES= ruleFUNCTION_ATTRIBUTES EOF
            {
             newCompositeNode(grammarAccess.getFUNCTION_ATTRIBUTESRule()); 
            pushFollow(FOLLOW_ruleFUNCTION_ATTRIBUTES_in_entryRuleFUNCTION_ATTRIBUTES10320);
            iv_ruleFUNCTION_ATTRIBUTES=ruleFUNCTION_ATTRIBUTES();

            state._fsp--;

             current =iv_ruleFUNCTION_ATTRIBUTES.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleFUNCTION_ATTRIBUTES10331); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleFUNCTION_ATTRIBUTES"


    // $ANTLR start "ruleFUNCTION_ATTRIBUTES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4896:1: ruleFUNCTION_ATTRIBUTES returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'address_safety' | (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' ) | kw= 'alwaysinline' | kw= 'nonlazybind' | kw= 'inlinehint' | kw= 'naked' | kw= 'noimplicitfloat' | kw= 'noinline' | kw= 'noredzone' | kw= 'noreturn' | kw= 'nounwind' | kw= 'optsize' | kw= 'readnone' | kw= 'readonly' | kw= 'returns_twice' | kw= 'ssp' | kw= 'sspreq' | kw= 'uwtable' ) ;
    public final AntlrDatatypeRuleToken ruleFUNCTION_ATTRIBUTES() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_INT_4=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4899:28: ( (kw= 'address_safety' | (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' ) | kw= 'alwaysinline' | kw= 'nonlazybind' | kw= 'inlinehint' | kw= 'naked' | kw= 'noimplicitfloat' | kw= 'noinline' | kw= 'noredzone' | kw= 'noreturn' | kw= 'nounwind' | kw= 'optsize' | kw= 'readnone' | kw= 'readonly' | kw= 'returns_twice' | kw= 'ssp' | kw= 'sspreq' | kw= 'uwtable' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4900:1: (kw= 'address_safety' | (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' ) | kw= 'alwaysinline' | kw= 'nonlazybind' | kw= 'inlinehint' | kw= 'naked' | kw= 'noimplicitfloat' | kw= 'noinline' | kw= 'noredzone' | kw= 'noreturn' | kw= 'nounwind' | kw= 'optsize' | kw= 'readnone' | kw= 'readonly' | kw= 'returns_twice' | kw= 'ssp' | kw= 'sspreq' | kw= 'uwtable' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4900:1: (kw= 'address_safety' | (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' ) | kw= 'alwaysinline' | kw= 'nonlazybind' | kw= 'inlinehint' | kw= 'naked' | kw= 'noimplicitfloat' | kw= 'noinline' | kw= 'noredzone' | kw= 'noreturn' | kw= 'nounwind' | kw= 'optsize' | kw= 'readnone' | kw= 'readonly' | kw= 'returns_twice' | kw= 'ssp' | kw= 'sspreq' | kw= 'uwtable' )
            int alt159=18;
            switch ( input.LA(1) ) {
            case 115:
                {
                alt159=1;
                }
                break;
            case 116:
                {
                alt159=2;
                }
                break;
            case 117:
                {
                alt159=3;
                }
                break;
            case 118:
                {
                alt159=4;
                }
                break;
            case 119:
                {
                alt159=5;
                }
                break;
            case 120:
                {
                alt159=6;
                }
                break;
            case 121:
                {
                alt159=7;
                }
                break;
            case 122:
                {
                alt159=8;
                }
                break;
            case 123:
                {
                alt159=9;
                }
                break;
            case 124:
                {
                alt159=10;
                }
                break;
            case 125:
                {
                alt159=11;
                }
                break;
            case 126:
                {
                alt159=12;
                }
                break;
            case 127:
                {
                alt159=13;
                }
                break;
            case 128:
                {
                alt159=14;
                }
                break;
            case 129:
                {
                alt159=15;
                }
                break;
            case 130:
                {
                alt159=16;
                }
                break;
            case 131:
                {
                alt159=17;
                }
                break;
            case 132:
                {
                alt159=18;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 159, 0, input);

                throw nvae;
            }

            switch (alt159) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4901:2: kw= 'address_safety'
                    {
                    kw=(Token)match(input,115,FOLLOW_115_in_ruleFUNCTION_ATTRIBUTES10369); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getAddress_safetyKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4907:6: (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4907:6: (kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')' )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4908:2: kw= 'alignstack' kw= '(' kw= '<' this_INT_4= RULE_INT kw= '>' kw= ')'
                    {
                    kw=(Token)match(input,116,FOLLOW_116_in_ruleFUNCTION_ATTRIBUTES10389); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getAlignstackKeyword_1_0()); 
                        
                    kw=(Token)match(input,52,FOLLOW_52_in_ruleFUNCTION_ATTRIBUTES10402); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getLeftParenthesisKeyword_1_1()); 
                        
                    kw=(Token)match(input,40,FOLLOW_40_in_ruleFUNCTION_ATTRIBUTES10415); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getLessThanSignKeyword_1_2()); 
                        
                    this_INT_4=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleFUNCTION_ATTRIBUTES10430); 

                    		current.merge(this_INT_4);
                        
                     
                        newLeafNode(this_INT_4, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getINTTerminalRuleCall_1_3()); 
                        
                    kw=(Token)match(input,41,FOLLOW_41_in_ruleFUNCTION_ATTRIBUTES10448); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getGreaterThanSignKeyword_1_4()); 
                        
                    kw=(Token)match(input,35,FOLLOW_35_in_ruleFUNCTION_ATTRIBUTES10461); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getRightParenthesisKeyword_1_5()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4946:2: kw= 'alwaysinline'
                    {
                    kw=(Token)match(input,117,FOLLOW_117_in_ruleFUNCTION_ATTRIBUTES10481); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getAlwaysinlineKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4953:2: kw= 'nonlazybind'
                    {
                    kw=(Token)match(input,118,FOLLOW_118_in_ruleFUNCTION_ATTRIBUTES10500); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNonlazybindKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4960:2: kw= 'inlinehint'
                    {
                    kw=(Token)match(input,119,FOLLOW_119_in_ruleFUNCTION_ATTRIBUTES10519); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getInlinehintKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4967:2: kw= 'naked'
                    {
                    kw=(Token)match(input,120,FOLLOW_120_in_ruleFUNCTION_ATTRIBUTES10538); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNakedKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4974:2: kw= 'noimplicitfloat'
                    {
                    kw=(Token)match(input,121,FOLLOW_121_in_ruleFUNCTION_ATTRIBUTES10557); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNoimplicitfloatKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4981:2: kw= 'noinline'
                    {
                    kw=(Token)match(input,122,FOLLOW_122_in_ruleFUNCTION_ATTRIBUTES10576); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNoinlineKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4988:2: kw= 'noredzone'
                    {
                    kw=(Token)match(input,123,FOLLOW_123_in_ruleFUNCTION_ATTRIBUTES10595); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNoredzoneKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:4995:2: kw= 'noreturn'
                    {
                    kw=(Token)match(input,124,FOLLOW_124_in_ruleFUNCTION_ATTRIBUTES10614); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNoreturnKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5002:2: kw= 'nounwind'
                    {
                    kw=(Token)match(input,125,FOLLOW_125_in_ruleFUNCTION_ATTRIBUTES10633); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getNounwindKeyword_10()); 
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5009:2: kw= 'optsize'
                    {
                    kw=(Token)match(input,126,FOLLOW_126_in_ruleFUNCTION_ATTRIBUTES10652); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getOptsizeKeyword_11()); 
                        

                    }
                    break;
                case 13 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5016:2: kw= 'readnone'
                    {
                    kw=(Token)match(input,127,FOLLOW_127_in_ruleFUNCTION_ATTRIBUTES10671); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getReadnoneKeyword_12()); 
                        

                    }
                    break;
                case 14 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5023:2: kw= 'readonly'
                    {
                    kw=(Token)match(input,128,FOLLOW_128_in_ruleFUNCTION_ATTRIBUTES10690); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getReadonlyKeyword_13()); 
                        

                    }
                    break;
                case 15 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5030:2: kw= 'returns_twice'
                    {
                    kw=(Token)match(input,129,FOLLOW_129_in_ruleFUNCTION_ATTRIBUTES10709); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getReturns_twiceKeyword_14()); 
                        

                    }
                    break;
                case 16 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5037:2: kw= 'ssp'
                    {
                    kw=(Token)match(input,130,FOLLOW_130_in_ruleFUNCTION_ATTRIBUTES10728); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getSspKeyword_15()); 
                        

                    }
                    break;
                case 17 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5044:2: kw= 'sspreq'
                    {
                    kw=(Token)match(input,131,FOLLOW_131_in_ruleFUNCTION_ATTRIBUTES10747); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getSspreqKeyword_16()); 
                        

                    }
                    break;
                case 18 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5051:2: kw= 'uwtable'
                    {
                    kw=(Token)match(input,132,FOLLOW_132_in_ruleFUNCTION_ATTRIBUTES10766); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getFUNCTION_ATTRIBUTESAccess().getUwtableKeyword_17()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleFUNCTION_ATTRIBUTES"


    // $ANTLR start "entryRulePHI"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5064:1: entryRulePHI returns [EObject current=null] : iv_rulePHI= rulePHI EOF ;
    public final EObject entryRulePHI() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePHI = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5065:2: (iv_rulePHI= rulePHI EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5066:2: iv_rulePHI= rulePHI EOF
            {
             newCompositeNode(grammarAccess.getPHIRule()); 
            pushFollow(FOLLOW_rulePHI_in_entryRulePHI10806);
            iv_rulePHI=rulePHI();

            state._fsp--;

             current =iv_rulePHI; 
            match(input,EOF,FOLLOW_EOF_in_entryRulePHI10816); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePHI"


    // $ANTLR start "rulePHI"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5073:1: rulePHI returns [EObject current=null] : (otherlv_0= 'phi' ruleType this_ARRAYL_2= RULE_ARRAYL ( (lv_values_3_0= ruleValuePair ) ) this_ARRAYR_4= RULE_ARRAYR (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )* ) ;
    public final EObject rulePHI() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token this_ARRAYL_2=null;
        Token this_ARRAYR_4=null;
        Token otherlv_5=null;
        Token this_ARRAYL_6=null;
        Token this_ARRAYR_8=null;
        EObject lv_values_3_0 = null;

        EObject lv_values_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5076:28: ( (otherlv_0= 'phi' ruleType this_ARRAYL_2= RULE_ARRAYL ( (lv_values_3_0= ruleValuePair ) ) this_ARRAYR_4= RULE_ARRAYR (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )* ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5077:1: (otherlv_0= 'phi' ruleType this_ARRAYL_2= RULE_ARRAYL ( (lv_values_3_0= ruleValuePair ) ) this_ARRAYR_4= RULE_ARRAYR (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )* )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5077:1: (otherlv_0= 'phi' ruleType this_ARRAYL_2= RULE_ARRAYL ( (lv_values_3_0= ruleValuePair ) ) this_ARRAYR_4= RULE_ARRAYR (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )* )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5077:3: otherlv_0= 'phi' ruleType this_ARRAYL_2= RULE_ARRAYL ( (lv_values_3_0= ruleValuePair ) ) this_ARRAYR_4= RULE_ARRAYR (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )*
            {
            otherlv_0=(Token)match(input,133,FOLLOW_133_in_rulePHI10853); 

                	newLeafNode(otherlv_0, grammarAccess.getPHIAccess().getPhiKeyword_0());
                
             
                    newCompositeNode(grammarAccess.getPHIAccess().getTypeParserRuleCall_1()); 
                
            pushFollow(FOLLOW_ruleType_in_rulePHI10869);
            ruleType();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                
            this_ARRAYL_2=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_rulePHI10879); 
             
                newLeafNode(this_ARRAYL_2, grammarAccess.getPHIAccess().getARRAYLTerminalRuleCall_2()); 
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5093:1: ( (lv_values_3_0= ruleValuePair ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5094:1: (lv_values_3_0= ruleValuePair )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5094:1: (lv_values_3_0= ruleValuePair )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5095:3: lv_values_3_0= ruleValuePair
            {
             
            	        newCompositeNode(grammarAccess.getPHIAccess().getValuesValuePairParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleValuePair_in_rulePHI10899);
            lv_values_3_0=ruleValuePair();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getPHIRule());
            	        }
                   		add(
                   			current, 
                   			"values",
                    		lv_values_3_0, 
                    		"ValuePair");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            this_ARRAYR_4=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_rulePHI10910); 
             
                newLeafNode(this_ARRAYR_4, grammarAccess.getPHIAccess().getARRAYRTerminalRuleCall_4()); 
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5115:1: (otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR )*
            loop160:
            do {
                int alt160=2;
                int LA160_0 = input.LA(1);

                if ( (LA160_0==27) ) {
                    alt160=1;
                }


                switch (alt160) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5115:3: otherlv_5= ',' this_ARRAYL_6= RULE_ARRAYL ( (lv_values_7_0= ruleValuePair ) ) this_ARRAYR_8= RULE_ARRAYR
            	    {
            	    otherlv_5=(Token)match(input,27,FOLLOW_27_in_rulePHI10922); 

            	        	newLeafNode(otherlv_5, grammarAccess.getPHIAccess().getCommaKeyword_5_0());
            	        
            	    this_ARRAYL_6=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_rulePHI10933); 
            	     
            	        newLeafNode(this_ARRAYL_6, grammarAccess.getPHIAccess().getARRAYLTerminalRuleCall_5_1()); 
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5123:1: ( (lv_values_7_0= ruleValuePair ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5124:1: (lv_values_7_0= ruleValuePair )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5124:1: (lv_values_7_0= ruleValuePair )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5125:3: lv_values_7_0= ruleValuePair
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getPHIAccess().getValuesValuePairParserRuleCall_5_2_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleValuePair_in_rulePHI10953);
            	    lv_values_7_0=ruleValuePair();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getPHIRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"values",
            	            		lv_values_7_0, 
            	            		"ValuePair");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    this_ARRAYR_8=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_rulePHI10964); 
            	     
            	        newLeafNode(this_ARRAYR_8, grammarAccess.getPHIAccess().getARRAYRTerminalRuleCall_5_3()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop160;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePHI"


    // $ANTLR start "entryRuleValuePair"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5153:1: entryRuleValuePair returns [EObject current=null] : iv_ruleValuePair= ruleValuePair EOF ;
    public final EObject entryRuleValuePair() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValuePair = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5154:2: (iv_ruleValuePair= ruleValuePair EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5155:2: iv_ruleValuePair= ruleValuePair EOF
            {
             newCompositeNode(grammarAccess.getValuePairRule()); 
            pushFollow(FOLLOW_ruleValuePair_in_entryRuleValuePair11001);
            iv_ruleValuePair=ruleValuePair();

            state._fsp--;

             current =iv_ruleValuePair; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleValuePair11011); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValuePair"


    // $ANTLR start "ruleValuePair"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5162:1: ruleValuePair returns [EObject current=null] : ( ( (lv_value1_0_0= ruleType ) ) otherlv_1= ',' ( (lv_value2_2_0= ruleType ) ) ) ;
    public final EObject ruleValuePair() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        AntlrDatatypeRuleToken lv_value1_0_0 = null;

        AntlrDatatypeRuleToken lv_value2_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5165:28: ( ( ( (lv_value1_0_0= ruleType ) ) otherlv_1= ',' ( (lv_value2_2_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5166:1: ( ( (lv_value1_0_0= ruleType ) ) otherlv_1= ',' ( (lv_value2_2_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5166:1: ( ( (lv_value1_0_0= ruleType ) ) otherlv_1= ',' ( (lv_value2_2_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5166:2: ( (lv_value1_0_0= ruleType ) ) otherlv_1= ',' ( (lv_value2_2_0= ruleType ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5166:2: ( (lv_value1_0_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5167:1: (lv_value1_0_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5167:1: (lv_value1_0_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5168:3: lv_value1_0_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValuePairAccess().getValue1TypeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValuePair11057);
            lv_value1_0_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValuePairRule());
            	        }
                   		set(
                   			current, 
                   			"value1",
                    		lv_value1_0_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_1=(Token)match(input,27,FOLLOW_27_in_ruleValuePair11069); 

                	newLeafNode(otherlv_1, grammarAccess.getValuePairAccess().getCommaKeyword_1());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5188:1: ( (lv_value2_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5189:1: (lv_value2_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5189:1: (lv_value2_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5190:3: lv_value2_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getValuePairAccess().getValue2TypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleValuePair11090);
            lv_value2_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getValuePairRule());
            	        }
                   		set(
                   			current, 
                   			"value2",
                    		lv_value2_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValuePair"


    // $ANTLR start "entryRuleLandingPad"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5214:1: entryRuleLandingPad returns [EObject current=null] : iv_ruleLandingPad= ruleLandingPad EOF ;
    public final EObject entryRuleLandingPad() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLandingPad = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5215:2: (iv_ruleLandingPad= ruleLandingPad EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5216:2: iv_ruleLandingPad= ruleLandingPad EOF
            {
             newCompositeNode(grammarAccess.getLandingPadRule()); 
            pushFollow(FOLLOW_ruleLandingPad_in_entryRuleLandingPad11126);
            iv_ruleLandingPad=ruleLandingPad();

            state._fsp--;

             current =iv_ruleLandingPad; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLandingPad11136); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLandingPad"


    // $ANTLR start "ruleLandingPad"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5223:1: ruleLandingPad returns [EObject current=null] : (otherlv_0= 'landingpad' ( (lv_struct_1_0= ruleStructure ) ) otherlv_2= 'personality' ( (lv_personalitytype_3_0= ruleType ) ) ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) ) ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ ) ) ;
    public final EObject ruleLandingPad() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        Token this_OREST_8=null;
        Token this_VAR_TYPE_9=null;
        Token otherlv_10=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        EObject lv_struct_1_0 = null;

        AntlrDatatypeRuleToken lv_personalitytype_3_0 = null;

        AntlrDatatypeRuleToken lv_personalityvalue_4_0 = null;

        AntlrDatatypeRuleToken lv_personalityfunction_5_0 = null;

        AntlrDatatypeRuleToken lv_value_7_0 = null;

        AntlrDatatypeRuleToken lv_castto_11_0 = null;

        EObject lv_clause_14_0 = null;

        EObject lv_clause_15_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5226:28: ( (otherlv_0= 'landingpad' ( (lv_struct_1_0= ruleStructure ) ) otherlv_2= 'personality' ( (lv_personalitytype_3_0= ruleType ) ) ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) ) ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5227:1: (otherlv_0= 'landingpad' ( (lv_struct_1_0= ruleStructure ) ) otherlv_2= 'personality' ( (lv_personalitytype_3_0= ruleType ) ) ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) ) ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5227:1: (otherlv_0= 'landingpad' ( (lv_struct_1_0= ruleStructure ) ) otherlv_2= 'personality' ( (lv_personalitytype_3_0= ruleType ) ) ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) ) ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5227:3: otherlv_0= 'landingpad' ( (lv_struct_1_0= ruleStructure ) ) otherlv_2= 'personality' ( (lv_personalitytype_3_0= ruleType ) ) ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) ) ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ )
            {
            otherlv_0=(Token)match(input,134,FOLLOW_134_in_ruleLandingPad11173); 

                	newLeafNode(otherlv_0, grammarAccess.getLandingPadAccess().getLandingpadKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5231:1: ( (lv_struct_1_0= ruleStructure ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5232:1: (lv_struct_1_0= ruleStructure )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5232:1: (lv_struct_1_0= ruleStructure )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5233:3: lv_struct_1_0= ruleStructure
            {
             
            	        newCompositeNode(grammarAccess.getLandingPadAccess().getStructStructureParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleStructure_in_ruleLandingPad11194);
            lv_struct_1_0=ruleStructure();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
            	        }
                   		set(
                   			current, 
                   			"struct",
                    		lv_struct_1_0, 
                    		"Structure");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_2=(Token)match(input,135,FOLLOW_135_in_ruleLandingPad11206); 

                	newLeafNode(otherlv_2, grammarAccess.getLandingPadAccess().getPersonalityKeyword_2());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5253:1: ( (lv_personalitytype_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5254:1: (lv_personalitytype_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5254:1: (lv_personalitytype_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5255:3: lv_personalitytype_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getLandingPadAccess().getPersonalitytypeTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleLandingPad11227);
            lv_personalitytype_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
            	        }
                   		set(
                   			current, 
                   			"personalitytype",
                    		lv_personalitytype_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5271:2: ( ( (lv_personalityvalue_4_0= ruleType ) ) | ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' ) )
            int alt161=2;
            int LA161_0 = input.LA(1);

            if ( ((LA161_0>=RULE_INT && LA161_0<=RULE_VAR_TYPE)||LA161_0==33||(LA161_0>=43 && LA161_0<=47)) ) {
                alt161=1;
            }
            else if ( ((LA161_0>=144 && LA161_0<=155)) ) {
                alt161=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 161, 0, input);

                throw nvae;
            }
            switch (alt161) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5271:3: ( (lv_personalityvalue_4_0= ruleType ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5271:3: ( (lv_personalityvalue_4_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5272:1: (lv_personalityvalue_4_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5272:1: (lv_personalityvalue_4_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5273:3: lv_personalityvalue_4_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLandingPadAccess().getPersonalityvalueTypeParserRuleCall_4_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLandingPad11249);
                    lv_personalityvalue_4_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	        }
                           		set(
                           			current, 
                           			"personalityvalue",
                            		lv_personalityvalue_4_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5290:6: ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5290:6: ( ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')' )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5290:7: ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) ) otherlv_6= '(' ( (lv_value_7_0= ruleType ) ) this_OREST_8= RULE_OREST this_VAR_TYPE_9= RULE_VAR_TYPE otherlv_10= 'to' ( (lv_castto_11_0= ruleType ) ) otherlv_12= ')'
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5290:7: ( (lv_personalityfunction_5_0= ruleCAST_TYPE ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5291:1: (lv_personalityfunction_5_0= ruleCAST_TYPE )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5291:1: (lv_personalityfunction_5_0= ruleCAST_TYPE )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5292:3: lv_personalityfunction_5_0= ruleCAST_TYPE
                    {
                     
                    	        newCompositeNode(grammarAccess.getLandingPadAccess().getPersonalityfunctionCAST_TYPEParserRuleCall_4_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleCAST_TYPE_in_ruleLandingPad11277);
                    lv_personalityfunction_5_0=ruleCAST_TYPE();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	        }
                           		set(
                           			current, 
                           			"personalityfunction",
                            		lv_personalityfunction_5_0, 
                            		"CAST_TYPE");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_6=(Token)match(input,52,FOLLOW_52_in_ruleLandingPad11289); 

                        	newLeafNode(otherlv_6, grammarAccess.getLandingPadAccess().getLeftParenthesisKeyword_4_1_1());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5312:1: ( (lv_value_7_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5313:1: (lv_value_7_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5313:1: (lv_value_7_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5314:3: lv_value_7_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLandingPadAccess().getValueTypeParserRuleCall_4_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLandingPad11310);
                    lv_value_7_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_7_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    this_OREST_8=(Token)match(input,RULE_OREST,FOLLOW_RULE_OREST_in_ruleLandingPad11321); 
                     
                        newLeafNode(this_OREST_8, grammarAccess.getLandingPadAccess().getORESTTerminalRuleCall_4_1_3()); 
                        
                    this_VAR_TYPE_9=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleLandingPad11331); 
                     
                        newLeafNode(this_VAR_TYPE_9, grammarAccess.getLandingPadAccess().getVAR_TYPETerminalRuleCall_4_1_4()); 
                        
                    otherlv_10=(Token)match(input,136,FOLLOW_136_in_ruleLandingPad11342); 

                        	newLeafNode(otherlv_10, grammarAccess.getLandingPadAccess().getToKeyword_4_1_5());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5342:1: ( (lv_castto_11_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5343:1: (lv_castto_11_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5343:1: (lv_castto_11_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5344:3: lv_castto_11_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getLandingPadAccess().getCasttoTypeParserRuleCall_4_1_6_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleLandingPad11363);
                    lv_castto_11_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	        }
                           		set(
                           			current, 
                           			"castto",
                            		lv_castto_11_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_12=(Token)match(input,35,FOLLOW_35_in_ruleLandingPad11375); 

                        	newLeafNode(otherlv_12, grammarAccess.getLandingPadAccess().getRightParenthesisKeyword_4_1_7());
                        

                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5364:3: ( (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* ) | ( (lv_clause_15_0= ruleClause ) )+ )
            int alt164=2;
            int LA164_0 = input.LA(1);

            if ( (LA164_0==137) ) {
                alt164=1;
            }
            else if ( (LA164_0==53||LA164_0==138) ) {
                alt164=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 164, 0, input);

                throw nvae;
            }
            switch (alt164) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5364:4: (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5364:4: (otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )* )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5364:6: otherlv_13= 'cleanup' ( (lv_clause_14_0= ruleClause ) )*
                    {
                    otherlv_13=(Token)match(input,137,FOLLOW_137_in_ruleLandingPad11391); 

                        	newLeafNode(otherlv_13, grammarAccess.getLandingPadAccess().getCleanupKeyword_5_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5368:1: ( (lv_clause_14_0= ruleClause ) )*
                    loop162:
                    do {
                        int alt162=2;
                        int LA162_0 = input.LA(1);

                        if ( (LA162_0==53||LA162_0==138) ) {
                            alt162=1;
                        }


                        switch (alt162) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5369:1: (lv_clause_14_0= ruleClause )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5369:1: (lv_clause_14_0= ruleClause )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5370:3: lv_clause_14_0= ruleClause
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getLandingPadAccess().getClauseClauseParserRuleCall_5_0_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleClause_in_ruleLandingPad11412);
                    	    lv_clause_14_0=ruleClause();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"clause",
                    	            		lv_clause_14_0, 
                    	            		"Clause");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop162;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5387:6: ( (lv_clause_15_0= ruleClause ) )+
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5387:6: ( (lv_clause_15_0= ruleClause ) )+
                    int cnt163=0;
                    loop163:
                    do {
                        int alt163=2;
                        int LA163_0 = input.LA(1);

                        if ( (LA163_0==53||LA163_0==138) ) {
                            alt163=1;
                        }


                        switch (alt163) {
                    	case 1 :
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5388:1: (lv_clause_15_0= ruleClause )
                    	    {
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5388:1: (lv_clause_15_0= ruleClause )
                    	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5389:3: lv_clause_15_0= ruleClause
                    	    {
                    	     
                    	    	        newCompositeNode(grammarAccess.getLandingPadAccess().getClauseClauseParserRuleCall_5_1_0()); 
                    	    	    
                    	    pushFollow(FOLLOW_ruleClause_in_ruleLandingPad11441);
                    	    lv_clause_15_0=ruleClause();

                    	    state._fsp--;


                    	    	        if (current==null) {
                    	    	            current = createModelElementForParent(grammarAccess.getLandingPadRule());
                    	    	        }
                    	           		add(
                    	           			current, 
                    	           			"clause",
                    	            		lv_clause_15_0, 
                    	            		"Clause");
                    	    	        afterParserOrEnumRuleCall();
                    	    	    

                    	    }


                    	    }
                    	    break;

                    	default :
                    	    if ( cnt163 >= 1 ) break loop163;
                                EarlyExitException eee =
                                    new EarlyExitException(163, input);
                                throw eee;
                        }
                        cnt163++;
                    } while (true);


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLandingPad"


    // $ANTLR start "entryRuleClause"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5413:1: entryRuleClause returns [EObject current=null] : iv_ruleClause= ruleClause EOF ;
    public final EObject entryRuleClause() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClause = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5414:2: (iv_ruleClause= ruleClause EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5415:2: iv_ruleClause= ruleClause EOF
            {
             newCompositeNode(grammarAccess.getClauseRule()); 
            pushFollow(FOLLOW_ruleClause_in_entryRuleClause11479);
            iv_ruleClause=ruleClause();

            state._fsp--;

             current =iv_ruleClause; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleClause11489); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClause"


    // $ANTLR start "ruleClause"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5422:1: ruleClause returns [EObject current=null] : ( (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) ) | (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) ) ) ;
    public final EObject ruleClause() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_type_1_0 = null;

        AntlrDatatypeRuleToken lv_value_2_0 = null;

        EObject lv_filterarray_4_0 = null;

        AntlrDatatypeRuleToken lv_constant_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5425:28: ( ( (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) ) | (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5426:1: ( (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) ) | (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5426:1: ( (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) ) | (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) ) )
            int alt166=2;
            int LA166_0 = input.LA(1);

            if ( (LA166_0==53) ) {
                alt166=1;
            }
            else if ( (LA166_0==138) ) {
                alt166=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 166, 0, input);

                throw nvae;
            }
            switch (alt166) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5426:2: (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5426:2: (otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5426:4: otherlv_0= 'catch' ( (lv_type_1_0= ruleType ) ) ( (lv_value_2_0= ruleType ) )
                    {
                    otherlv_0=(Token)match(input,53,FOLLOW_53_in_ruleClause11527); 

                        	newLeafNode(otherlv_0, grammarAccess.getClauseAccess().getCatchKeyword_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5430:1: ( (lv_type_1_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5431:1: (lv_type_1_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5431:1: (lv_type_1_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5432:3: lv_type_1_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getClauseAccess().getTypeTypeParserRuleCall_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleClause11548);
                    lv_type_1_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getClauseRule());
                    	        }
                           		set(
                           			current, 
                           			"type",
                            		lv_type_1_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5448:2: ( (lv_value_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5449:1: (lv_value_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5449:1: (lv_value_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5450:3: lv_value_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getClauseAccess().getValueTypeParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleClause11569);
                    lv_value_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getClauseRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5467:6: (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5467:6: (otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5467:8: otherlv_3= 'filter' ( (lv_filterarray_4_0= ruleARRAY ) ) ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' )
                    {
                    otherlv_3=(Token)match(input,138,FOLLOW_138_in_ruleClause11589); 

                        	newLeafNode(otherlv_3, grammarAccess.getClauseAccess().getFilterKeyword_1_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5471:1: ( (lv_filterarray_4_0= ruleARRAY ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5472:1: (lv_filterarray_4_0= ruleARRAY )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5472:1: (lv_filterarray_4_0= ruleARRAY )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5473:3: lv_filterarray_4_0= ruleARRAY
                    {
                     
                    	        newCompositeNode(grammarAccess.getClauseAccess().getFilterarrayARRAYParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleARRAY_in_ruleClause11610);
                    lv_filterarray_4_0=ruleARRAY();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getClauseRule());
                    	        }
                           		set(
                           			current, 
                           			"filterarray",
                            		lv_filterarray_4_0, 
                            		"ARRAY");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5489:2: ( ( (lv_constant_5_0= ruleType ) ) | otherlv_6= 'zeroinitializer' )
                    int alt165=2;
                    int LA165_0 = input.LA(1);

                    if ( ((LA165_0>=RULE_INT && LA165_0<=RULE_VAR_TYPE)||LA165_0==33||(LA165_0>=43 && LA165_0<=47)) ) {
                        alt165=1;
                    }
                    else if ( (LA165_0==32) ) {
                        alt165=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 165, 0, input);

                        throw nvae;
                    }
                    switch (alt165) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5489:3: ( (lv_constant_5_0= ruleType ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5489:3: ( (lv_constant_5_0= ruleType ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5490:1: (lv_constant_5_0= ruleType )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5490:1: (lv_constant_5_0= ruleType )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5491:3: lv_constant_5_0= ruleType
                            {
                             
                            	        newCompositeNode(grammarAccess.getClauseAccess().getConstantTypeParserRuleCall_1_2_0_0()); 
                            	    
                            pushFollow(FOLLOW_ruleType_in_ruleClause11632);
                            lv_constant_5_0=ruleType();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getClauseRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"constant",
                                    		lv_constant_5_0, 
                                    		"Type");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5508:7: otherlv_6= 'zeroinitializer'
                            {
                            otherlv_6=(Token)match(input,32,FOLLOW_32_in_ruleClause11650); 

                                	newLeafNode(otherlv_6, grammarAccess.getClauseAccess().getZeroinitializerKeyword_1_2_1());
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClause"


    // $ANTLR start "entryRuleSelect"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5520:1: entryRuleSelect returns [EObject current=null] : iv_ruleSelect= ruleSelect EOF ;
    public final EObject entryRuleSelect() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSelect = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5521:2: (iv_ruleSelect= ruleSelect EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5522:2: iv_ruleSelect= ruleSelect EOF
            {
             newCompositeNode(grammarAccess.getSelectRule()); 
            pushFollow(FOLLOW_ruleSelect_in_entryRuleSelect11688);
            iv_ruleSelect=ruleSelect();

            state._fsp--;

             current =iv_ruleSelect; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSelect11698); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSelect"


    // $ANTLR start "ruleSelect"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5529:1: ruleSelect returns [EObject current=null] : (otherlv_0= 'select' ( (lv_conditiontype_1_0= ruleType ) ) ( (lv_conditionvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val1type_4_0= ruleType ) ) ( (lv_val1value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_val2type_7_0= ruleType ) ) ( (lv_val2value_8_0= ruleType ) ) ) ;
    public final EObject ruleSelect() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_conditiontype_1_0 = null;

        AntlrDatatypeRuleToken lv_conditionvalue_2_0 = null;

        AntlrDatatypeRuleToken lv_val1type_4_0 = null;

        AntlrDatatypeRuleToken lv_val1value_5_0 = null;

        AntlrDatatypeRuleToken lv_val2type_7_0 = null;

        AntlrDatatypeRuleToken lv_val2value_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5532:28: ( (otherlv_0= 'select' ( (lv_conditiontype_1_0= ruleType ) ) ( (lv_conditionvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val1type_4_0= ruleType ) ) ( (lv_val1value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_val2type_7_0= ruleType ) ) ( (lv_val2value_8_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5533:1: (otherlv_0= 'select' ( (lv_conditiontype_1_0= ruleType ) ) ( (lv_conditionvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val1type_4_0= ruleType ) ) ( (lv_val1value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_val2type_7_0= ruleType ) ) ( (lv_val2value_8_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5533:1: (otherlv_0= 'select' ( (lv_conditiontype_1_0= ruleType ) ) ( (lv_conditionvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val1type_4_0= ruleType ) ) ( (lv_val1value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_val2type_7_0= ruleType ) ) ( (lv_val2value_8_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5533:3: otherlv_0= 'select' ( (lv_conditiontype_1_0= ruleType ) ) ( (lv_conditionvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val1type_4_0= ruleType ) ) ( (lv_val1value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_val2type_7_0= ruleType ) ) ( (lv_val2value_8_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,139,FOLLOW_139_in_ruleSelect11735); 

                	newLeafNode(otherlv_0, grammarAccess.getSelectAccess().getSelectKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5537:1: ( (lv_conditiontype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5538:1: (lv_conditiontype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5538:1: (lv_conditiontype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5539:3: lv_conditiontype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getConditiontypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11756);
            lv_conditiontype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"conditiontype",
                    		lv_conditiontype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5555:2: ( (lv_conditionvalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5556:1: (lv_conditionvalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5556:1: (lv_conditionvalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5557:3: lv_conditionvalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getConditionvalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11777);
            lv_conditionvalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"conditionvalue",
                    		lv_conditionvalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleSelect11789); 

                	newLeafNode(otherlv_3, grammarAccess.getSelectAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5577:1: ( (lv_val1type_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5578:1: (lv_val1type_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5578:1: (lv_val1type_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5579:3: lv_val1type_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getVal1typeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11810);
            lv_val1type_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"val1type",
                    		lv_val1type_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5595:2: ( (lv_val1value_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5596:1: (lv_val1value_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5596:1: (lv_val1value_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5597:3: lv_val1value_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getVal1valueTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11831);
            lv_val1value_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"val1value",
                    		lv_val1value_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleSelect11843); 

                	newLeafNode(otherlv_6, grammarAccess.getSelectAccess().getCommaKeyword_6());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5617:1: ( (lv_val2type_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5618:1: (lv_val2type_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5618:1: (lv_val2type_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5619:3: lv_val2type_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getVal2typeTypeParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11864);
            lv_val2type_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"val2type",
                    		lv_val2type_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5635:2: ( (lv_val2value_8_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5636:1: (lv_val2value_8_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5636:1: (lv_val2value_8_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5637:3: lv_val2value_8_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSelectAccess().getVal2valueTypeParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSelect11885);
            lv_val2value_8_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSelectRule());
            	        }
                   		set(
                   			current, 
                   			"val2value",
                    		lv_val2value_8_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSelect"


    // $ANTLR start "entryRuleVA_Arg"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5661:1: entryRuleVA_Arg returns [EObject current=null] : iv_ruleVA_Arg= ruleVA_Arg EOF ;
    public final EObject entryRuleVA_Arg() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVA_Arg = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5662:2: (iv_ruleVA_Arg= ruleVA_Arg EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5663:2: iv_ruleVA_Arg= ruleVA_Arg EOF
            {
             newCompositeNode(grammarAccess.getVA_ArgRule()); 
            pushFollow(FOLLOW_ruleVA_Arg_in_entryRuleVA_Arg11921);
            iv_ruleVA_Arg=ruleVA_Arg();

            state._fsp--;

             current =iv_ruleVA_Arg; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVA_Arg11931); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVA_Arg"


    // $ANTLR start "ruleVA_Arg"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5670:1: ruleVA_Arg returns [EObject current=null] : (otherlv_0= 'va_arg' ( (lv_listtype_1_0= ruleType ) ) ( (lv_listvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_argType_4_0= ruleType ) ) ) ;
    public final EObject ruleVA_Arg() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_listtype_1_0 = null;

        AntlrDatatypeRuleToken lv_listvalue_2_0 = null;

        AntlrDatatypeRuleToken lv_argType_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5673:28: ( (otherlv_0= 'va_arg' ( (lv_listtype_1_0= ruleType ) ) ( (lv_listvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_argType_4_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5674:1: (otherlv_0= 'va_arg' ( (lv_listtype_1_0= ruleType ) ) ( (lv_listvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_argType_4_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5674:1: (otherlv_0= 'va_arg' ( (lv_listtype_1_0= ruleType ) ) ( (lv_listvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_argType_4_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5674:3: otherlv_0= 'va_arg' ( (lv_listtype_1_0= ruleType ) ) ( (lv_listvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_argType_4_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,140,FOLLOW_140_in_ruleVA_Arg11968); 

                	newLeafNode(otherlv_0, grammarAccess.getVA_ArgAccess().getVa_argKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5678:1: ( (lv_listtype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5679:1: (lv_listtype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5679:1: (lv_listtype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5680:3: lv_listtype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getVA_ArgAccess().getListtypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleVA_Arg11989);
            lv_listtype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVA_ArgRule());
            	        }
                   		set(
                   			current, 
                   			"listtype",
                    		lv_listtype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5696:2: ( (lv_listvalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5697:1: (lv_listvalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5697:1: (lv_listvalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5698:3: lv_listvalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getVA_ArgAccess().getListvalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleVA_Arg12010);
            lv_listvalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVA_ArgRule());
            	        }
                   		set(
                   			current, 
                   			"listvalue",
                    		lv_listvalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleVA_Arg12022); 

                	newLeafNode(otherlv_3, grammarAccess.getVA_ArgAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5718:1: ( (lv_argType_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5719:1: (lv_argType_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5719:1: (lv_argType_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5720:3: lv_argType_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getVA_ArgAccess().getArgTypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleVA_Arg12043);
            lv_argType_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getVA_ArgRule());
            	        }
                   		set(
                   			current, 
                   			"argType",
                    		lv_argType_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVA_Arg"


    // $ANTLR start "entryRuleExtractElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5744:1: entryRuleExtractElement returns [EObject current=null] : iv_ruleExtractElement= ruleExtractElement EOF ;
    public final EObject entryRuleExtractElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtractElement = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5745:2: (iv_ruleExtractElement= ruleExtractElement EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5746:2: iv_ruleExtractElement= ruleExtractElement EOF
            {
             newCompositeNode(grammarAccess.getExtractElementRule()); 
            pushFollow(FOLLOW_ruleExtractElement_in_entryRuleExtractElement12079);
            iv_ruleExtractElement=ruleExtractElement();

            state._fsp--;

             current =iv_ruleExtractElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtractElement12089); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtractElement"


    // $ANTLR start "ruleExtractElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5753:1: ruleExtractElement returns [EObject current=null] : (otherlv_0= 'extractelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_indextype_4_0= ruleType ) ) ( (lv_index_5_0= ruleType ) ) ) ;
    public final EObject ruleExtractElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        AntlrDatatypeRuleToken lv_vectortype_1_0 = null;

        AntlrDatatypeRuleToken lv_vectorvalue_2_0 = null;

        AntlrDatatypeRuleToken lv_indextype_4_0 = null;

        AntlrDatatypeRuleToken lv_index_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5756:28: ( (otherlv_0= 'extractelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_indextype_4_0= ruleType ) ) ( (lv_index_5_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5757:1: (otherlv_0= 'extractelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_indextype_4_0= ruleType ) ) ( (lv_index_5_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5757:1: (otherlv_0= 'extractelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_indextype_4_0= ruleType ) ) ( (lv_index_5_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5757:3: otherlv_0= 'extractelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_indextype_4_0= ruleType ) ) ( (lv_index_5_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,141,FOLLOW_141_in_ruleExtractElement12126); 

                	newLeafNode(otherlv_0, grammarAccess.getExtractElementAccess().getExtractelementKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5761:1: ( (lv_vectortype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5762:1: (lv_vectortype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5762:1: (lv_vectortype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5763:3: lv_vectortype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getExtractElementAccess().getVectortypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleExtractElement12147);
            lv_vectortype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtractElementRule());
            	        }
                   		set(
                   			current, 
                   			"vectortype",
                    		lv_vectortype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5779:2: ( (lv_vectorvalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5780:1: (lv_vectorvalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5780:1: (lv_vectorvalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5781:3: lv_vectorvalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getExtractElementAccess().getVectorvalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleExtractElement12168);
            lv_vectorvalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtractElementRule());
            	        }
                   		set(
                   			current, 
                   			"vectorvalue",
                    		lv_vectorvalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleExtractElement12180); 

                	newLeafNode(otherlv_3, grammarAccess.getExtractElementAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5801:1: ( (lv_indextype_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5802:1: (lv_indextype_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5802:1: (lv_indextype_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5803:3: lv_indextype_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getExtractElementAccess().getIndextypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleExtractElement12201);
            lv_indextype_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtractElementRule());
            	        }
                   		set(
                   			current, 
                   			"indextype",
                    		lv_indextype_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5819:2: ( (lv_index_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5820:1: (lv_index_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5820:1: (lv_index_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5821:3: lv_index_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getExtractElementAccess().getIndexTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleExtractElement12222);
            lv_index_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExtractElementRule());
            	        }
                   		set(
                   			current, 
                   			"index",
                    		lv_index_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtractElement"


    // $ANTLR start "entryRuleInsertElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5845:1: entryRuleInsertElement returns [EObject current=null] : iv_ruleInsertElement= ruleInsertElement EOF ;
    public final EObject entryRuleInsertElement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInsertElement = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5846:2: (iv_ruleInsertElement= ruleInsertElement EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5847:2: iv_ruleInsertElement= ruleInsertElement EOF
            {
             newCompositeNode(grammarAccess.getInsertElementRule()); 
            pushFollow(FOLLOW_ruleInsertElement_in_entryRuleInsertElement12258);
            iv_ruleInsertElement=ruleInsertElement();

            state._fsp--;

             current =iv_ruleInsertElement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInsertElement12268); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInsertElement"


    // $ANTLR start "ruleInsertElement"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5854:1: ruleInsertElement returns [EObject current=null] : (otherlv_0= 'insertelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_scalartype_4_0= ruleType ) ) ( (lv_scalarvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_indextype_7_0= ruleType ) ) ( (lv_index_8_0= ruleType ) ) ) ;
    public final EObject ruleInsertElement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_vectortype_1_0 = null;

        AntlrDatatypeRuleToken lv_vectorvalue_2_0 = null;

        AntlrDatatypeRuleToken lv_scalartype_4_0 = null;

        AntlrDatatypeRuleToken lv_scalarvalue_5_0 = null;

        AntlrDatatypeRuleToken lv_indextype_7_0 = null;

        AntlrDatatypeRuleToken lv_index_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5857:28: ( (otherlv_0= 'insertelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_scalartype_4_0= ruleType ) ) ( (lv_scalarvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_indextype_7_0= ruleType ) ) ( (lv_index_8_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5858:1: (otherlv_0= 'insertelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_scalartype_4_0= ruleType ) ) ( (lv_scalarvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_indextype_7_0= ruleType ) ) ( (lv_index_8_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5858:1: (otherlv_0= 'insertelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_scalartype_4_0= ruleType ) ) ( (lv_scalarvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_indextype_7_0= ruleType ) ) ( (lv_index_8_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5858:3: otherlv_0= 'insertelement' ( (lv_vectortype_1_0= ruleType ) ) ( (lv_vectorvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_scalartype_4_0= ruleType ) ) ( (lv_scalarvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_indextype_7_0= ruleType ) ) ( (lv_index_8_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,142,FOLLOW_142_in_ruleInsertElement12305); 

                	newLeafNode(otherlv_0, grammarAccess.getInsertElementAccess().getInsertelementKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5862:1: ( (lv_vectortype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5863:1: (lv_vectortype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5863:1: (lv_vectortype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5864:3: lv_vectortype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getVectortypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12326);
            lv_vectortype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"vectortype",
                    		lv_vectortype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5880:2: ( (lv_vectorvalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5881:1: (lv_vectorvalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5881:1: (lv_vectorvalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5882:3: lv_vectorvalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getVectorvalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12347);
            lv_vectorvalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"vectorvalue",
                    		lv_vectorvalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleInsertElement12359); 

                	newLeafNode(otherlv_3, grammarAccess.getInsertElementAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5902:1: ( (lv_scalartype_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5903:1: (lv_scalartype_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5903:1: (lv_scalartype_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5904:3: lv_scalartype_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getScalartypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12380);
            lv_scalartype_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"scalartype",
                    		lv_scalartype_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5920:2: ( (lv_scalarvalue_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5921:1: (lv_scalarvalue_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5921:1: (lv_scalarvalue_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5922:3: lv_scalarvalue_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getScalarvalueTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12401);
            lv_scalarvalue_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"scalarvalue",
                    		lv_scalarvalue_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleInsertElement12413); 

                	newLeafNode(otherlv_6, grammarAccess.getInsertElementAccess().getCommaKeyword_6());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5942:1: ( (lv_indextype_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5943:1: (lv_indextype_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5943:1: (lv_indextype_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5944:3: lv_indextype_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getIndextypeTypeParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12434);
            lv_indextype_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"indextype",
                    		lv_indextype_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5960:2: ( (lv_index_8_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5961:1: (lv_index_8_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5961:1: (lv_index_8_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5962:3: lv_index_8_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInsertElementAccess().getIndexTypeParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInsertElement12455);
            lv_index_8_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInsertElementRule());
            	        }
                   		set(
                   			current, 
                   			"index",
                    		lv_index_8_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInsertElement"


    // $ANTLR start "entryRuleShuffleVector"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5986:1: entryRuleShuffleVector returns [EObject current=null] : iv_ruleShuffleVector= ruleShuffleVector EOF ;
    public final EObject entryRuleShuffleVector() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleShuffleVector = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5987:2: (iv_ruleShuffleVector= ruleShuffleVector EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5988:2: iv_ruleShuffleVector= ruleShuffleVector EOF
            {
             newCompositeNode(grammarAccess.getShuffleVectorRule()); 
            pushFollow(FOLLOW_ruleShuffleVector_in_entryRuleShuffleVector12491);
            iv_ruleShuffleVector=ruleShuffleVector();

            state._fsp--;

             current =iv_ruleShuffleVector; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleShuffleVector12501); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleShuffleVector"


    // $ANTLR start "ruleShuffleVector"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5995:1: ruleShuffleVector returns [EObject current=null] : (otherlv_0= 'shufflevector' ( (lv_val1type_1_0= ruleType ) ) ( (lv_val1value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val2type_4_0= ruleType ) ) ( (lv_val2value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_masktype_7_0= ruleType ) ) ( (lv_maskvalue_8_0= ruleType ) ) ) ;
    public final EObject ruleShuffleVector() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        AntlrDatatypeRuleToken lv_val1type_1_0 = null;

        AntlrDatatypeRuleToken lv_val1value_2_0 = null;

        AntlrDatatypeRuleToken lv_val2type_4_0 = null;

        AntlrDatatypeRuleToken lv_val2value_5_0 = null;

        AntlrDatatypeRuleToken lv_masktype_7_0 = null;

        AntlrDatatypeRuleToken lv_maskvalue_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5998:28: ( (otherlv_0= 'shufflevector' ( (lv_val1type_1_0= ruleType ) ) ( (lv_val1value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val2type_4_0= ruleType ) ) ( (lv_val2value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_masktype_7_0= ruleType ) ) ( (lv_maskvalue_8_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5999:1: (otherlv_0= 'shufflevector' ( (lv_val1type_1_0= ruleType ) ) ( (lv_val1value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val2type_4_0= ruleType ) ) ( (lv_val2value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_masktype_7_0= ruleType ) ) ( (lv_maskvalue_8_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5999:1: (otherlv_0= 'shufflevector' ( (lv_val1type_1_0= ruleType ) ) ( (lv_val1value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val2type_4_0= ruleType ) ) ( (lv_val2value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_masktype_7_0= ruleType ) ) ( (lv_maskvalue_8_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:5999:3: otherlv_0= 'shufflevector' ( (lv_val1type_1_0= ruleType ) ) ( (lv_val1value_2_0= ruleType ) ) otherlv_3= ',' ( (lv_val2type_4_0= ruleType ) ) ( (lv_val2value_5_0= ruleType ) ) otherlv_6= ',' ( (lv_masktype_7_0= ruleType ) ) ( (lv_maskvalue_8_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,143,FOLLOW_143_in_ruleShuffleVector12538); 

                	newLeafNode(otherlv_0, grammarAccess.getShuffleVectorAccess().getShufflevectorKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6003:1: ( (lv_val1type_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6004:1: (lv_val1type_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6004:1: (lv_val1type_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6005:3: lv_val1type_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getVal1typeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12559);
            lv_val1type_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"val1type",
                    		lv_val1type_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6021:2: ( (lv_val1value_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6022:1: (lv_val1value_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6022:1: (lv_val1value_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6023:3: lv_val1value_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getVal1valueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12580);
            lv_val1value_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"val1value",
                    		lv_val1value_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleShuffleVector12592); 

                	newLeafNode(otherlv_3, grammarAccess.getShuffleVectorAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6043:1: ( (lv_val2type_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6044:1: (lv_val2type_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6044:1: (lv_val2type_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6045:3: lv_val2type_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getVal2typeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12613);
            lv_val2type_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"val2type",
                    		lv_val2type_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6061:2: ( (lv_val2value_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6062:1: (lv_val2value_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6062:1: (lv_val2value_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6063:3: lv_val2value_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getVal2valueTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12634);
            lv_val2value_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"val2value",
                    		lv_val2value_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleShuffleVector12646); 

                	newLeafNode(otherlv_6, grammarAccess.getShuffleVectorAccess().getCommaKeyword_6());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6083:1: ( (lv_masktype_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6084:1: (lv_masktype_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6084:1: (lv_masktype_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6085:3: lv_masktype_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getMasktypeTypeParserRuleCall_7_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12667);
            lv_masktype_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"masktype",
                    		lv_masktype_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6101:2: ( (lv_maskvalue_8_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6102:1: (lv_maskvalue_8_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6102:1: (lv_maskvalue_8_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6103:3: lv_maskvalue_8_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getShuffleVectorAccess().getMaskvalueTypeParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleShuffleVector12688);
            lv_maskvalue_8_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getShuffleVectorRule());
            	        }
                   		set(
                   			current, 
                   			"maskvalue",
                    		lv_maskvalue_8_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleShuffleVector"


    // $ANTLR start "entryRuleCast"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6127:1: entryRuleCast returns [EObject current=null] : iv_ruleCast= ruleCast EOF ;
    public final EObject entryRuleCast() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCast = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6128:2: (iv_ruleCast= ruleCast EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6129:2: iv_ruleCast= ruleCast EOF
            {
             newCompositeNode(grammarAccess.getCastRule()); 
            pushFollow(FOLLOW_ruleCast_in_entryRuleCast12724);
            iv_ruleCast=ruleCast();

            state._fsp--;

             current =iv_ruleCast; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCast12734); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCast"


    // $ANTLR start "ruleCast"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6136:1: ruleCast returns [EObject current=null] : ( ruleCAST_TYPE (otherlv_1= '(' )? ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) ) (otherlv_7= '(' )* ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) ) ( (lv_global_13_0= ruleType ) )? (otherlv_14= ')' )* otherlv_15= 'to' ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) ) ) ;
    public final EObject ruleCast() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token lv_castfrom_2_1=null;
        Token lv_castfrom_2_2=null;
        Token otherlv_4=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        Token otherlv_11=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token lv_castto_16_1=null;
        Token lv_castto_16_2=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_castfrom_3_0 = null;

        EObject lv_types_5_0 = null;

        EObject lv_caststruct_6_0 = null;

        AntlrDatatypeRuleToken lv_value_8_0 = null;

        AntlrDatatypeRuleToken lv_dual_10_0 = null;

        EObject lv_op_12_0 = null;

        AntlrDatatypeRuleToken lv_global_13_0 = null;

        AntlrDatatypeRuleToken lv_castto_17_0 = null;

        EObject lv_types_19_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6139:28: ( ( ruleCAST_TYPE (otherlv_1= '(' )? ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) ) (otherlv_7= '(' )* ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) ) ( (lv_global_13_0= ruleType ) )? (otherlv_14= ')' )* otherlv_15= 'to' ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6140:1: ( ruleCAST_TYPE (otherlv_1= '(' )? ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) ) (otherlv_7= '(' )* ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) ) ( (lv_global_13_0= ruleType ) )? (otherlv_14= ')' )* otherlv_15= 'to' ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6140:1: ( ruleCAST_TYPE (otherlv_1= '(' )? ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) ) (otherlv_7= '(' )* ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) ) ( (lv_global_13_0= ruleType ) )? (otherlv_14= ')' )* otherlv_15= 'to' ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6141:5: ruleCAST_TYPE (otherlv_1= '(' )? ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) ) (otherlv_7= '(' )* ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) ) ( (lv_global_13_0= ruleType ) )? (otherlv_14= ')' )* otherlv_15= 'to' ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) )
            {
             
                    newCompositeNode(grammarAccess.getCastAccess().getCAST_TYPEParserRuleCall_0()); 
                
            pushFollow(FOLLOW_ruleCAST_TYPE_in_ruleCast12775);
            ruleCAST_TYPE();

            state._fsp--;

             
                    afterParserOrEnumRuleCall();
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6148:1: (otherlv_1= '(' )?
            int alt167=2;
            int LA167_0 = input.LA(1);

            if ( (LA167_0==52) ) {
                alt167=1;
            }
            switch (alt167) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6148:3: otherlv_1= '('
                    {
                    otherlv_1=(Token)match(input,52,FOLLOW_52_in_ruleCast12787); 

                        	newLeafNode(otherlv_1, grammarAccess.getCastAccess().getLeftParenthesisKeyword_1());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6152:3: ( ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) ) | ( (lv_caststruct_6_0= ruleStructure ) ) )
            int alt171=2;
            int LA171_0 = input.LA(1);

            if ( ((LA171_0>=RULE_INTEGER && LA171_0<=RULE_VAR_TYPE)||LA171_0==33||(LA171_0>=43 && LA171_0<=47)) ) {
                alt171=1;
            }
            else if ( (LA171_0==34||LA171_0==40) ) {
                alt171=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 171, 0, input);

                throw nvae;
            }
            switch (alt171) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6152:4: ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6152:4: ( ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) ) | ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) ) )
                    int alt170=2;
                    int LA170_0 = input.LA(1);

                    if ( ((LA170_0>=RULE_INTEGER && LA170_0<=RULE_VAR_TYPE)) ) {
                        alt170=1;
                    }
                    else if ( (LA170_0==33||(LA170_0>=43 && LA170_0<=47)) ) {
                        alt170=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 170, 0, input);

                        throw nvae;
                    }
                    switch (alt170) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6152:5: ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6152:5: ( ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6153:1: ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6153:1: ( (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6154:1: (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6154:1: (lv_castfrom_2_1= RULE_VAR_TYPE | lv_castfrom_2_2= RULE_INTEGER )
                            int alt168=2;
                            int LA168_0 = input.LA(1);

                            if ( (LA168_0==RULE_VAR_TYPE) ) {
                                alt168=1;
                            }
                            else if ( (LA168_0==RULE_INTEGER) ) {
                                alt168=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 168, 0, input);

                                throw nvae;
                            }
                            switch (alt168) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6155:3: lv_castfrom_2_1= RULE_VAR_TYPE
                                    {
                                    lv_castfrom_2_1=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleCast12810); 

                                    			newLeafNode(lv_castfrom_2_1, grammarAccess.getCastAccess().getCastfromVAR_TYPETerminalRuleCall_2_0_0_0_0()); 
                                    		

                                    	        if (current==null) {
                                    	            current = createModelElement(grammarAccess.getCastRule());
                                    	        }
                                           		setWithLastConsumed(
                                           			current, 
                                           			"castfrom",
                                            		lv_castfrom_2_1, 
                                            		"VAR_TYPE");
                                    	    

                                    }
                                    break;
                                case 2 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6170:8: lv_castfrom_2_2= RULE_INTEGER
                                    {
                                    lv_castfrom_2_2=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleCast12830); 

                                    			newLeafNode(lv_castfrom_2_2, grammarAccess.getCastAccess().getCastfromINTEGERTerminalRuleCall_2_0_0_0_1()); 
                                    		

                                    	        if (current==null) {
                                    	            current = createModelElement(grammarAccess.getCastRule());
                                    	        }
                                           		setWithLastConsumed(
                                           			current, 
                                           			"castfrom",
                                            		lv_castfrom_2_2, 
                                            		"INTEGER");
                                    	    

                                    }
                                    break;

                            }


                            }


                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6189:6: ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6189:6: ( ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6189:7: ( (lv_castfrom_3_0= rulePrimitive ) ) (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6189:7: ( (lv_castfrom_3_0= rulePrimitive ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6190:1: (lv_castfrom_3_0= rulePrimitive )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6190:1: (lv_castfrom_3_0= rulePrimitive )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6191:3: lv_castfrom_3_0= rulePrimitive
                            {
                             
                            	        newCompositeNode(grammarAccess.getCastAccess().getCastfromPrimitiveParserRuleCall_2_0_1_0_0()); 
                            	    
                            pushFollow(FOLLOW_rulePrimitive_in_ruleCast12866);
                            lv_castfrom_3_0=rulePrimitive();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCastRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"castfrom",
                                    		lv_castfrom_3_0, 
                                    		"Primitive");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6207:2: (otherlv_4= '()*' | ( (lv_types_5_0= ruleTypeList ) ) )
                            int alt169=2;
                            int LA169_0 = input.LA(1);

                            if ( (LA169_0==38) ) {
                                alt169=1;
                            }
                            else if ( (LA169_0==52) ) {
                                alt169=2;
                            }
                            else {
                                NoViableAltException nvae =
                                    new NoViableAltException("", 169, 0, input);

                                throw nvae;
                            }
                            switch (alt169) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6207:4: otherlv_4= '()*'
                                    {
                                    otherlv_4=(Token)match(input,38,FOLLOW_38_in_ruleCast12879); 

                                        	newLeafNode(otherlv_4, grammarAccess.getCastAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_2_0_1_1_0());
                                        

                                    }
                                    break;
                                case 2 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6212:6: ( (lv_types_5_0= ruleTypeList ) )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6212:6: ( (lv_types_5_0= ruleTypeList ) )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6213:1: (lv_types_5_0= ruleTypeList )
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6213:1: (lv_types_5_0= ruleTypeList )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6214:3: lv_types_5_0= ruleTypeList
                                    {
                                     
                                    	        newCompositeNode(grammarAccess.getCastAccess().getTypesTypeListParserRuleCall_2_0_1_1_1_0()); 
                                    	    
                                    pushFollow(FOLLOW_ruleTypeList_in_ruleCast12906);
                                    lv_types_5_0=ruleTypeList();

                                    state._fsp--;


                                    	        if (current==null) {
                                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                                    	        }
                                           		add(
                                           			current, 
                                           			"types",
                                            		lv_types_5_0, 
                                            		"TypeList");
                                    	        afterParserOrEnumRuleCall();
                                    	    

                                    }


                                    }


                                    }
                                    break;

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6231:6: ( (lv_caststruct_6_0= ruleStructure ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6231:6: ( (lv_caststruct_6_0= ruleStructure ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6232:1: (lv_caststruct_6_0= ruleStructure )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6232:1: (lv_caststruct_6_0= ruleStructure )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6233:3: lv_caststruct_6_0= ruleStructure
                    {
                     
                    	        newCompositeNode(grammarAccess.getCastAccess().getCaststructStructureParserRuleCall_2_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleStructure_in_ruleCast12936);
                    lv_caststruct_6_0=ruleStructure();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                    	        }
                           		set(
                           			current, 
                           			"caststruct",
                            		lv_caststruct_6_0, 
                            		"Structure");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6249:3: (otherlv_7= '(' )*
            loop172:
            do {
                int alt172=2;
                int LA172_0 = input.LA(1);

                if ( (LA172_0==52) ) {
                    alt172=1;
                }


                switch (alt172) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6249:5: otherlv_7= '('
            	    {
            	    otherlv_7=(Token)match(input,52,FOLLOW_52_in_ruleCast12950); 

            	        	newLeafNode(otherlv_7, grammarAccess.getCastAccess().getLeftParenthesisKeyword_3());
            	        

            	    }
            	    break;

            	default :
            	    break loop172;
                }
            } while (true);

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6253:3: ( ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? ) | ( (lv_op_12_0= ruleGetElementPtr ) ) )
            int alt174=2;
            int LA174_0 = input.LA(1);

            if ( ((LA174_0>=RULE_INT && LA174_0<=RULE_VAR_TYPE)||LA174_0==33||(LA174_0>=43 && LA174_0<=47)) ) {
                alt174=1;
            }
            else if ( (LA174_0==60) ) {
                alt174=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 174, 0, input);

                throw nvae;
            }
            switch (alt174) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6253:4: ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6253:4: ( ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6253:5: ( (lv_value_8_0= ruleType ) ) (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6253:5: ( (lv_value_8_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6254:1: (lv_value_8_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6254:1: (lv_value_8_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6255:3: lv_value_8_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCastAccess().getValueTypeParserRuleCall_4_0_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCast12975);
                    lv_value_8_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                    	        }
                           		set(
                           			current, 
                           			"value",
                            		lv_value_8_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6271:2: (otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*' )?
                    int alt173=2;
                    int LA173_0 = input.LA(1);

                    if ( (LA173_0==27) ) {
                        alt173=1;
                    }
                    switch (alt173) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6271:4: otherlv_9= ',' ( (lv_dual_10_0= ruleType ) ) otherlv_11= ')*'
                            {
                            otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleCast12988); 

                                	newLeafNode(otherlv_9, grammarAccess.getCastAccess().getCommaKeyword_4_0_1_0());
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6275:1: ( (lv_dual_10_0= ruleType ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6276:1: (lv_dual_10_0= ruleType )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6276:1: (lv_dual_10_0= ruleType )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6277:3: lv_dual_10_0= ruleType
                            {
                             
                            	        newCompositeNode(grammarAccess.getCastAccess().getDualTypeParserRuleCall_4_0_1_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleType_in_ruleCast13009);
                            lv_dual_10_0=ruleType();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCastRule());
                            	        }
                                   		set(
                                   			current, 
                                   			"dual",
                                    		lv_dual_10_0, 
                                    		"Type");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }

                            otherlv_11=(Token)match(input,55,FOLLOW_55_in_ruleCast13021); 

                                	newLeafNode(otherlv_11, grammarAccess.getCastAccess().getRightParenthesisAsteriskKeyword_4_0_1_2());
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6298:6: ( (lv_op_12_0= ruleGetElementPtr ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6298:6: ( (lv_op_12_0= ruleGetElementPtr ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6299:1: (lv_op_12_0= ruleGetElementPtr )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6299:1: (lv_op_12_0= ruleGetElementPtr )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6300:3: lv_op_12_0= ruleGetElementPtr
                    {
                     
                    	        newCompositeNode(grammarAccess.getCastAccess().getOpGetElementPtrParserRuleCall_4_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleGetElementPtr_in_ruleCast13051);
                    lv_op_12_0=ruleGetElementPtr();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                    	        }
                           		set(
                           			current, 
                           			"op",
                            		lv_op_12_0, 
                            		"GetElementPtr");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6316:3: ( (lv_global_13_0= ruleType ) )?
            int alt175=2;
            int LA175_0 = input.LA(1);

            if ( ((LA175_0>=RULE_INT && LA175_0<=RULE_VAR_TYPE)||LA175_0==33||(LA175_0>=43 && LA175_0<=47)) ) {
                alt175=1;
            }
            switch (alt175) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6317:1: (lv_global_13_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6317:1: (lv_global_13_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6318:3: lv_global_13_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCastAccess().getGlobalTypeParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCast13073);
                    lv_global_13_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                    	        }
                           		set(
                           			current, 
                           			"global",
                            		lv_global_13_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6334:3: (otherlv_14= ')' )*
            loop176:
            do {
                int alt176=2;
                int LA176_0 = input.LA(1);

                if ( (LA176_0==35) ) {
                    alt176=1;
                }


                switch (alt176) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6334:5: otherlv_14= ')'
            	    {
            	    otherlv_14=(Token)match(input,35,FOLLOW_35_in_ruleCast13087); 

            	        	newLeafNode(otherlv_14, grammarAccess.getCastAccess().getRightParenthesisKeyword_6());
            	        

            	    }
            	    break;

            	default :
            	    break loop176;
                }
            } while (true);

            otherlv_15=(Token)match(input,136,FOLLOW_136_in_ruleCast13101); 

                	newLeafNode(otherlv_15, grammarAccess.getCastAccess().getToKeyword_7());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6342:1: ( ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) ) | ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) ) )
            int alt179=2;
            int LA179_0 = input.LA(1);

            if ( ((LA179_0>=RULE_INTEGER && LA179_0<=RULE_VAR_TYPE)) ) {
                alt179=1;
            }
            else if ( (LA179_0==33||(LA179_0>=43 && LA179_0<=47)) ) {
                alt179=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 179, 0, input);

                throw nvae;
            }
            switch (alt179) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6342:2: ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6342:2: ( ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6343:1: ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6343:1: ( (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6344:1: (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6344:1: (lv_castto_16_1= RULE_VAR_TYPE | lv_castto_16_2= RULE_INTEGER )
                    int alt177=2;
                    int LA177_0 = input.LA(1);

                    if ( (LA177_0==RULE_VAR_TYPE) ) {
                        alt177=1;
                    }
                    else if ( (LA177_0==RULE_INTEGER) ) {
                        alt177=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 177, 0, input);

                        throw nvae;
                    }
                    switch (alt177) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6345:3: lv_castto_16_1= RULE_VAR_TYPE
                            {
                            lv_castto_16_1=(Token)match(input,RULE_VAR_TYPE,FOLLOW_RULE_VAR_TYPE_in_ruleCast13121); 

                            			newLeafNode(lv_castto_16_1, grammarAccess.getCastAccess().getCasttoVAR_TYPETerminalRuleCall_8_0_0_0()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getCastRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"castto",
                                    		lv_castto_16_1, 
                                    		"VAR_TYPE");
                            	    

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6360:8: lv_castto_16_2= RULE_INTEGER
                            {
                            lv_castto_16_2=(Token)match(input,RULE_INTEGER,FOLLOW_RULE_INTEGER_in_ruleCast13141); 

                            			newLeafNode(lv_castto_16_2, grammarAccess.getCastAccess().getCasttoINTEGERTerminalRuleCall_8_0_0_1()); 
                            		

                            	        if (current==null) {
                            	            current = createModelElement(grammarAccess.getCastRule());
                            	        }
                                   		setWithLastConsumed(
                                   			current, 
                                   			"castto",
                                    		lv_castto_16_2, 
                                    		"INTEGER");
                            	    

                            }
                            break;

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6379:6: ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6379:6: ( ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6379:7: ( (lv_castto_17_0= rulePrimitive ) ) (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6379:7: ( (lv_castto_17_0= rulePrimitive ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6380:1: (lv_castto_17_0= rulePrimitive )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6380:1: (lv_castto_17_0= rulePrimitive )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6381:3: lv_castto_17_0= rulePrimitive
                    {
                     
                    	        newCompositeNode(grammarAccess.getCastAccess().getCasttoPrimitiveParserRuleCall_8_1_0_0()); 
                    	    
                    pushFollow(FOLLOW_rulePrimitive_in_ruleCast13177);
                    lv_castto_17_0=rulePrimitive();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCastRule());
                    	        }
                           		set(
                           			current, 
                           			"castto",
                            		lv_castto_17_0, 
                            		"Primitive");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6397:2: (otherlv_18= '()*' | ( (lv_types_19_0= ruleTypeList ) ) )
                    int alt178=2;
                    int LA178_0 = input.LA(1);

                    if ( (LA178_0==38) ) {
                        alt178=1;
                    }
                    else if ( (LA178_0==52) ) {
                        alt178=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 178, 0, input);

                        throw nvae;
                    }
                    switch (alt178) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6397:4: otherlv_18= '()*'
                            {
                            otherlv_18=(Token)match(input,38,FOLLOW_38_in_ruleCast13190); 

                                	newLeafNode(otherlv_18, grammarAccess.getCastAccess().getLeftParenthesisRightParenthesisAsteriskKeyword_8_1_1_0());
                                

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6402:6: ( (lv_types_19_0= ruleTypeList ) )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6402:6: ( (lv_types_19_0= ruleTypeList ) )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6403:1: (lv_types_19_0= ruleTypeList )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6403:1: (lv_types_19_0= ruleTypeList )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6404:3: lv_types_19_0= ruleTypeList
                            {
                             
                            	        newCompositeNode(grammarAccess.getCastAccess().getTypesTypeListParserRuleCall_8_1_1_1_0()); 
                            	    
                            pushFollow(FOLLOW_ruleTypeList_in_ruleCast13217);
                            lv_types_19_0=ruleTypeList();

                            state._fsp--;


                            	        if (current==null) {
                            	            current = createModelElementForParent(grammarAccess.getCastRule());
                            	        }
                                   		add(
                                   			current, 
                                   			"types",
                                    		lv_types_19_0, 
                                    		"TypeList");
                            	        afterParserOrEnumRuleCall();
                            	    

                            }


                            }


                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCast"


    // $ANTLR start "entryRuleCAST_TYPE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6428:1: entryRuleCAST_TYPE returns [String current=null] : iv_ruleCAST_TYPE= ruleCAST_TYPE EOF ;
    public final String entryRuleCAST_TYPE() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleCAST_TYPE = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6429:2: (iv_ruleCAST_TYPE= ruleCAST_TYPE EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6430:2: iv_ruleCAST_TYPE= ruleCAST_TYPE EOF
            {
             newCompositeNode(grammarAccess.getCAST_TYPERule()); 
            pushFollow(FOLLOW_ruleCAST_TYPE_in_entryRuleCAST_TYPE13257);
            iv_ruleCAST_TYPE=ruleCAST_TYPE();

            state._fsp--;

             current =iv_ruleCAST_TYPE.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCAST_TYPE13268); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCAST_TYPE"


    // $ANTLR start "ruleCAST_TYPE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6437:1: ruleCAST_TYPE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' ) ;
    public final AntlrDatatypeRuleToken ruleCAST_TYPE() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6440:28: ( (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6441:1: (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6441:1: (kw= 'trunc' | kw= 'zext' | kw= 'sext' | kw= 'fptrunc' | kw= 'fpext' | kw= 'fptoui' | kw= 'fptosi' | kw= 'uitofp' | kw= 'sitofp' | kw= 'ptrtoint' | kw= 'inttoptr' | kw= 'bitcast' )
            int alt180=12;
            switch ( input.LA(1) ) {
            case 144:
                {
                alt180=1;
                }
                break;
            case 145:
                {
                alt180=2;
                }
                break;
            case 146:
                {
                alt180=3;
                }
                break;
            case 147:
                {
                alt180=4;
                }
                break;
            case 148:
                {
                alt180=5;
                }
                break;
            case 149:
                {
                alt180=6;
                }
                break;
            case 150:
                {
                alt180=7;
                }
                break;
            case 151:
                {
                alt180=8;
                }
                break;
            case 152:
                {
                alt180=9;
                }
                break;
            case 153:
                {
                alt180=10;
                }
                break;
            case 154:
                {
                alt180=11;
                }
                break;
            case 155:
                {
                alt180=12;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 180, 0, input);

                throw nvae;
            }

            switch (alt180) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6442:2: kw= 'trunc'
                    {
                    kw=(Token)match(input,144,FOLLOW_144_in_ruleCAST_TYPE13306); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getTruncKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6449:2: kw= 'zext'
                    {
                    kw=(Token)match(input,145,FOLLOW_145_in_ruleCAST_TYPE13325); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getZextKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6456:2: kw= 'sext'
                    {
                    kw=(Token)match(input,146,FOLLOW_146_in_ruleCAST_TYPE13344); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getSextKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6463:2: kw= 'fptrunc'
                    {
                    kw=(Token)match(input,147,FOLLOW_147_in_ruleCAST_TYPE13363); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getFptruncKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6470:2: kw= 'fpext'
                    {
                    kw=(Token)match(input,148,FOLLOW_148_in_ruleCAST_TYPE13382); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getFpextKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6477:2: kw= 'fptoui'
                    {
                    kw=(Token)match(input,149,FOLLOW_149_in_ruleCAST_TYPE13401); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getFptouiKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6484:2: kw= 'fptosi'
                    {
                    kw=(Token)match(input,150,FOLLOW_150_in_ruleCAST_TYPE13420); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getFptosiKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6491:2: kw= 'uitofp'
                    {
                    kw=(Token)match(input,151,FOLLOW_151_in_ruleCAST_TYPE13439); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getUitofpKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6498:2: kw= 'sitofp'
                    {
                    kw=(Token)match(input,152,FOLLOW_152_in_ruleCAST_TYPE13458); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getSitofpKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6505:2: kw= 'ptrtoint'
                    {
                    kw=(Token)match(input,153,FOLLOW_153_in_ruleCAST_TYPE13477); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getPtrtointKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6512:2: kw= 'inttoptr'
                    {
                    kw=(Token)match(input,154,FOLLOW_154_in_ruleCAST_TYPE13496); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getInttoptrKeyword_10()); 
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6519:2: kw= 'bitcast'
                    {
                    kw=(Token)match(input,155,FOLLOW_155_in_ruleCAST_TYPE13515); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getCAST_TYPEAccess().getBitcastKeyword_11()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCAST_TYPE"


    // $ANTLR start "entryRuleCompare"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6532:1: entryRuleCompare returns [EObject current=null] : iv_ruleCompare= ruleCompare EOF ;
    public final EObject entryRuleCompare() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCompare = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6533:2: (iv_ruleCompare= ruleCompare EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6534:2: iv_ruleCompare= ruleCompare EOF
            {
             newCompositeNode(grammarAccess.getCompareRule()); 
            pushFollow(FOLLOW_ruleCompare_in_entryRuleCompare13555);
            iv_ruleCompare=ruleCompare();

            state._fsp--;

             current =iv_ruleCompare; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleCompare13565); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCompare"


    // $ANTLR start "ruleCompare"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6541:1: ruleCompare returns [EObject current=null] : ( (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) ) | (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) ) ) ;
    public final EObject ruleCompare() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_comptype_2_0 = null;

        AntlrDatatypeRuleToken lv_value1_3_0 = null;

        AntlrDatatypeRuleToken lv_value2_5_0 = null;

        AntlrDatatypeRuleToken lv_comptype_8_0 = null;

        AntlrDatatypeRuleToken lv_value1_9_0 = null;

        AntlrDatatypeRuleToken lv_value2_11_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6544:28: ( ( (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) ) | (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6545:1: ( (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) ) | (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6545:1: ( (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) ) | (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) ) )
            int alt181=2;
            int LA181_0 = input.LA(1);

            if ( (LA181_0==156) ) {
                alt181=1;
            }
            else if ( (LA181_0==157) ) {
                alt181=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 181, 0, input);

                throw nvae;
            }
            switch (alt181) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6545:2: (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6545:2: (otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6545:4: otherlv_0= 'icmp' ruleI_PREDICATES ( (lv_comptype_2_0= ruleType ) ) ( (lv_value1_3_0= ruleType ) ) otherlv_4= ',' ( (lv_value2_5_0= ruleType ) )
                    {
                    otherlv_0=(Token)match(input,156,FOLLOW_156_in_ruleCompare13603); 

                        	newLeafNode(otherlv_0, grammarAccess.getCompareAccess().getIcmpKeyword_0_0());
                        
                     
                            newCompositeNode(grammarAccess.getCompareAccess().getI_PREDICATESParserRuleCall_0_1()); 
                        
                    pushFollow(FOLLOW_ruleI_PREDICATES_in_ruleCompare13619);
                    ruleI_PREDICATES();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6557:1: ( (lv_comptype_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6558:1: (lv_comptype_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6558:1: (lv_comptype_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6559:3: lv_comptype_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getComptypeTypeParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13639);
                    lv_comptype_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"comptype",
                            		lv_comptype_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6575:2: ( (lv_value1_3_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6576:1: (lv_value1_3_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6576:1: (lv_value1_3_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6577:3: lv_value1_3_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getValue1TypeParserRuleCall_0_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13660);
                    lv_value1_3_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"value1",
                            		lv_value1_3_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_4=(Token)match(input,27,FOLLOW_27_in_ruleCompare13672); 

                        	newLeafNode(otherlv_4, grammarAccess.getCompareAccess().getCommaKeyword_0_4());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6597:1: ( (lv_value2_5_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6598:1: (lv_value2_5_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6598:1: (lv_value2_5_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6599:3: lv_value2_5_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getValue2TypeParserRuleCall_0_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13693);
                    lv_value2_5_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"value2",
                            		lv_value2_5_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6616:6: (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6616:6: (otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6616:8: otherlv_6= 'fcmp' ruleF_PREDICATES ( (lv_comptype_8_0= ruleType ) ) ( (lv_value1_9_0= ruleType ) ) otherlv_10= ',' ( (lv_value2_11_0= ruleType ) )
                    {
                    otherlv_6=(Token)match(input,157,FOLLOW_157_in_ruleCompare13713); 

                        	newLeafNode(otherlv_6, grammarAccess.getCompareAccess().getFcmpKeyword_1_0());
                        
                     
                            newCompositeNode(grammarAccess.getCompareAccess().getF_PREDICATESParserRuleCall_1_1()); 
                        
                    pushFollow(FOLLOW_ruleF_PREDICATES_in_ruleCompare13729);
                    ruleF_PREDICATES();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6628:1: ( (lv_comptype_8_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6629:1: (lv_comptype_8_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6629:1: (lv_comptype_8_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6630:3: lv_comptype_8_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getComptypeTypeParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13749);
                    lv_comptype_8_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"comptype",
                            		lv_comptype_8_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6646:2: ( (lv_value1_9_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6647:1: (lv_value1_9_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6647:1: (lv_value1_9_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6648:3: lv_value1_9_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getValue1TypeParserRuleCall_1_3_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13770);
                    lv_value1_9_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"value1",
                            		lv_value1_9_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_10=(Token)match(input,27,FOLLOW_27_in_ruleCompare13782); 

                        	newLeafNode(otherlv_10, grammarAccess.getCompareAccess().getCommaKeyword_1_4());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6668:1: ( (lv_value2_11_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6669:1: (lv_value2_11_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6669:1: (lv_value2_11_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6670:3: lv_value2_11_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getCompareAccess().getValue2TypeParserRuleCall_1_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleCompare13803);
                    lv_value2_11_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getCompareRule());
                    	        }
                           		set(
                           			current, 
                           			"value2",
                            		lv_value2_11_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCompare"


    // $ANTLR start "entryRuleI_PREDICATES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6694:1: entryRuleI_PREDICATES returns [String current=null] : iv_ruleI_PREDICATES= ruleI_PREDICATES EOF ;
    public final String entryRuleI_PREDICATES() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleI_PREDICATES = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6695:2: (iv_ruleI_PREDICATES= ruleI_PREDICATES EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6696:2: iv_ruleI_PREDICATES= ruleI_PREDICATES EOF
            {
             newCompositeNode(grammarAccess.getI_PREDICATESRule()); 
            pushFollow(FOLLOW_ruleI_PREDICATES_in_entryRuleI_PREDICATES13841);
            iv_ruleI_PREDICATES=ruleI_PREDICATES();

            state._fsp--;

             current =iv_ruleI_PREDICATES.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleI_PREDICATES13852); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleI_PREDICATES"


    // $ANTLR start "ruleI_PREDICATES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6703:1: ruleI_PREDICATES returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' ) ;
    public final AntlrDatatypeRuleToken ruleI_PREDICATES() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6706:28: ( (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6707:1: (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6707:1: (kw= 'eq' | kw= 'ne' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'sgt' | kw= 'sge' | kw= 'slt' | kw= 'sle' )
            int alt182=10;
            switch ( input.LA(1) ) {
            case 158:
                {
                alt182=1;
                }
                break;
            case 159:
                {
                alt182=2;
                }
                break;
            case 160:
                {
                alt182=3;
                }
                break;
            case 161:
                {
                alt182=4;
                }
                break;
            case 162:
                {
                alt182=5;
                }
                break;
            case 163:
                {
                alt182=6;
                }
                break;
            case 164:
                {
                alt182=7;
                }
                break;
            case 165:
                {
                alt182=8;
                }
                break;
            case 166:
                {
                alt182=9;
                }
                break;
            case 167:
                {
                alt182=10;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 182, 0, input);

                throw nvae;
            }

            switch (alt182) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6708:2: kw= 'eq'
                    {
                    kw=(Token)match(input,158,FOLLOW_158_in_ruleI_PREDICATES13890); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getEqKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6715:2: kw= 'ne'
                    {
                    kw=(Token)match(input,159,FOLLOW_159_in_ruleI_PREDICATES13909); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getNeKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6722:2: kw= 'ugt'
                    {
                    kw=(Token)match(input,160,FOLLOW_160_in_ruleI_PREDICATES13928); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getUgtKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6729:2: kw= 'uge'
                    {
                    kw=(Token)match(input,161,FOLLOW_161_in_ruleI_PREDICATES13947); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getUgeKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6736:2: kw= 'ult'
                    {
                    kw=(Token)match(input,162,FOLLOW_162_in_ruleI_PREDICATES13966); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getUltKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6743:2: kw= 'ule'
                    {
                    kw=(Token)match(input,163,FOLLOW_163_in_ruleI_PREDICATES13985); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getUleKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6750:2: kw= 'sgt'
                    {
                    kw=(Token)match(input,164,FOLLOW_164_in_ruleI_PREDICATES14004); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getSgtKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6757:2: kw= 'sge'
                    {
                    kw=(Token)match(input,165,FOLLOW_165_in_ruleI_PREDICATES14023); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getSgeKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6764:2: kw= 'slt'
                    {
                    kw=(Token)match(input,166,FOLLOW_166_in_ruleI_PREDICATES14042); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getSltKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6771:2: kw= 'sle'
                    {
                    kw=(Token)match(input,167,FOLLOW_167_in_ruleI_PREDICATES14061); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getI_PREDICATESAccess().getSleKeyword_9()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleI_PREDICATES"


    // $ANTLR start "entryRuleF_PREDICATES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6784:1: entryRuleF_PREDICATES returns [String current=null] : iv_ruleF_PREDICATES= ruleF_PREDICATES EOF ;
    public final String entryRuleF_PREDICATES() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleF_PREDICATES = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6785:2: (iv_ruleF_PREDICATES= ruleF_PREDICATES EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6786:2: iv_ruleF_PREDICATES= ruleF_PREDICATES EOF
            {
             newCompositeNode(grammarAccess.getF_PREDICATESRule()); 
            pushFollow(FOLLOW_ruleF_PREDICATES_in_entryRuleF_PREDICATES14102);
            iv_ruleF_PREDICATES=ruleF_PREDICATES();

            state._fsp--;

             current =iv_ruleF_PREDICATES.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleF_PREDICATES14113); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleF_PREDICATES"


    // $ANTLR start "ruleF_PREDICATES"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6793:1: ruleF_PREDICATES returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'false' | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' | kw= 'true' ) ;
    public final AntlrDatatypeRuleToken ruleF_PREDICATES() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6796:28: ( (kw= 'false' | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' | kw= 'true' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6797:1: (kw= 'false' | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' | kw= 'true' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6797:1: (kw= 'false' | kw= 'oeq' | kw= 'ogt' | kw= 'oge' | kw= 'olt' | kw= 'ole' | kw= 'one' | kw= 'ord' | kw= 'ueq' | kw= 'ugt' | kw= 'uge' | kw= 'ult' | kw= 'ule' | kw= 'une' | kw= 'uno' | kw= 'true' )
            int alt183=16;
            switch ( input.LA(1) ) {
            case 47:
                {
                alt183=1;
                }
                break;
            case 168:
                {
                alt183=2;
                }
                break;
            case 169:
                {
                alt183=3;
                }
                break;
            case 170:
                {
                alt183=4;
                }
                break;
            case 171:
                {
                alt183=5;
                }
                break;
            case 172:
                {
                alt183=6;
                }
                break;
            case 173:
                {
                alt183=7;
                }
                break;
            case 174:
                {
                alt183=8;
                }
                break;
            case 175:
                {
                alt183=9;
                }
                break;
            case 160:
                {
                alt183=10;
                }
                break;
            case 161:
                {
                alt183=11;
                }
                break;
            case 162:
                {
                alt183=12;
                }
                break;
            case 163:
                {
                alt183=13;
                }
                break;
            case 176:
                {
                alt183=14;
                }
                break;
            case 177:
                {
                alt183=15;
                }
                break;
            case 46:
                {
                alt183=16;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 183, 0, input);

                throw nvae;
            }

            switch (alt183) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6798:2: kw= 'false'
                    {
                    kw=(Token)match(input,47,FOLLOW_47_in_ruleF_PREDICATES14151); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getFalseKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6805:2: kw= 'oeq'
                    {
                    kw=(Token)match(input,168,FOLLOW_168_in_ruleF_PREDICATES14170); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOeqKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6812:2: kw= 'ogt'
                    {
                    kw=(Token)match(input,169,FOLLOW_169_in_ruleF_PREDICATES14189); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOgtKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6819:2: kw= 'oge'
                    {
                    kw=(Token)match(input,170,FOLLOW_170_in_ruleF_PREDICATES14208); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOgeKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6826:2: kw= 'olt'
                    {
                    kw=(Token)match(input,171,FOLLOW_171_in_ruleF_PREDICATES14227); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOltKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6833:2: kw= 'ole'
                    {
                    kw=(Token)match(input,172,FOLLOW_172_in_ruleF_PREDICATES14246); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOleKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6840:2: kw= 'one'
                    {
                    kw=(Token)match(input,173,FOLLOW_173_in_ruleF_PREDICATES14265); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOneKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6847:2: kw= 'ord'
                    {
                    kw=(Token)match(input,174,FOLLOW_174_in_ruleF_PREDICATES14284); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getOrdKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6854:2: kw= 'ueq'
                    {
                    kw=(Token)match(input,175,FOLLOW_175_in_ruleF_PREDICATES14303); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUeqKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6861:2: kw= 'ugt'
                    {
                    kw=(Token)match(input,160,FOLLOW_160_in_ruleF_PREDICATES14322); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUgtKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6868:2: kw= 'uge'
                    {
                    kw=(Token)match(input,161,FOLLOW_161_in_ruleF_PREDICATES14341); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUgeKeyword_10()); 
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6875:2: kw= 'ult'
                    {
                    kw=(Token)match(input,162,FOLLOW_162_in_ruleF_PREDICATES14360); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUltKeyword_11()); 
                        

                    }
                    break;
                case 13 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6882:2: kw= 'ule'
                    {
                    kw=(Token)match(input,163,FOLLOW_163_in_ruleF_PREDICATES14379); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUleKeyword_12()); 
                        

                    }
                    break;
                case 14 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6889:2: kw= 'une'
                    {
                    kw=(Token)match(input,176,FOLLOW_176_in_ruleF_PREDICATES14398); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUneKeyword_13()); 
                        

                    }
                    break;
                case 15 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6896:2: kw= 'uno'
                    {
                    kw=(Token)match(input,177,FOLLOW_177_in_ruleF_PREDICATES14417); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getUnoKeyword_14()); 
                        

                    }
                    break;
                case 16 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6903:2: kw= 'true'
                    {
                    kw=(Token)match(input,46,FOLLOW_46_in_ruleF_PREDICATES14436); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getF_PREDICATESAccess().getTrueKeyword_15()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleF_PREDICATES"


    // $ANTLR start "entryRuleARITHMETIC_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6916:1: entryRuleARITHMETIC_OP returns [EObject current=null] : iv_ruleARITHMETIC_OP= ruleARITHMETIC_OP EOF ;
    public final EObject entryRuleARITHMETIC_OP() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleARITHMETIC_OP = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6917:2: (iv_ruleARITHMETIC_OP= ruleARITHMETIC_OP EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6918:2: iv_ruleARITHMETIC_OP= ruleARITHMETIC_OP EOF
            {
             newCompositeNode(grammarAccess.getARITHMETIC_OPRule()); 
            pushFollow(FOLLOW_ruleARITHMETIC_OP_in_entryRuleARITHMETIC_OP14476);
            iv_ruleARITHMETIC_OP=ruleARITHMETIC_OP();

            state._fsp--;

             current =iv_ruleARITHMETIC_OP; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleARITHMETIC_OP14486); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleARITHMETIC_OP"


    // $ANTLR start "ruleARITHMETIC_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6925:1: ruleARITHMETIC_OP returns [EObject current=null] : ( (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' ) ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )? ( (lv_optype_16_0= ruleType ) ) ( (lv_value1_17_0= ruleType ) ) otherlv_18= ',' ( (lv_value2_19_0= ruleType ) ) ) ;
    public final EObject ruleARITHMETIC_OP() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token otherlv_13=null;
        Token otherlv_14=null;
        Token otherlv_15=null;
        Token otherlv_18=null;
        AntlrDatatypeRuleToken lv_optype_16_0 = null;

        AntlrDatatypeRuleToken lv_value1_17_0 = null;

        AntlrDatatypeRuleToken lv_value2_19_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6928:28: ( ( (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' ) ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )? ( (lv_optype_16_0= ruleType ) ) ( (lv_value1_17_0= ruleType ) ) otherlv_18= ',' ( (lv_value2_19_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6929:1: ( (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' ) ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )? ( (lv_optype_16_0= ruleType ) ) ( (lv_value1_17_0= ruleType ) ) otherlv_18= ',' ( (lv_value2_19_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6929:1: ( (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' ) ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )? ( (lv_optype_16_0= ruleType ) ) ( (lv_value1_17_0= ruleType ) ) otherlv_18= ',' ( (lv_value2_19_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6929:2: (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' ) ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )? ( (lv_optype_16_0= ruleType ) ) ( (lv_value1_17_0= ruleType ) ) otherlv_18= ',' ( (lv_value2_19_0= ruleType ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6929:2: (otherlv_0= 'add' | otherlv_1= 'fadd' | otherlv_2= 'sub' | otherlv_3= 'fsub' | otherlv_4= 'mul' | otherlv_5= 'fmul' | otherlv_6= 'udiv' | otherlv_7= 'sdiv' | otherlv_8= 'fdiv' | otherlv_9= 'urem' | otherlv_10= 'srem' | otherlv_11= 'frem' )
            int alt184=12;
            switch ( input.LA(1) ) {
            case 75:
                {
                alt184=1;
                }
                break;
            case 178:
                {
                alt184=2;
                }
                break;
            case 76:
                {
                alt184=3;
                }
                break;
            case 179:
                {
                alt184=4;
                }
                break;
            case 180:
                {
                alt184=5;
                }
                break;
            case 181:
                {
                alt184=6;
                }
                break;
            case 182:
                {
                alt184=7;
                }
                break;
            case 183:
                {
                alt184=8;
                }
                break;
            case 184:
                {
                alt184=9;
                }
                break;
            case 185:
                {
                alt184=10;
                }
                break;
            case 186:
                {
                alt184=11;
                }
                break;
            case 187:
                {
                alt184=12;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 184, 0, input);

                throw nvae;
            }

            switch (alt184) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6929:4: otherlv_0= 'add'
                    {
                    otherlv_0=(Token)match(input,75,FOLLOW_75_in_ruleARITHMETIC_OP14524); 

                        	newLeafNode(otherlv_0, grammarAccess.getARITHMETIC_OPAccess().getAddKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6934:7: otherlv_1= 'fadd'
                    {
                    otherlv_1=(Token)match(input,178,FOLLOW_178_in_ruleARITHMETIC_OP14542); 

                        	newLeafNode(otherlv_1, grammarAccess.getARITHMETIC_OPAccess().getFaddKeyword_0_1());
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6939:7: otherlv_2= 'sub'
                    {
                    otherlv_2=(Token)match(input,76,FOLLOW_76_in_ruleARITHMETIC_OP14560); 

                        	newLeafNode(otherlv_2, grammarAccess.getARITHMETIC_OPAccess().getSubKeyword_0_2());
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6944:7: otherlv_3= 'fsub'
                    {
                    otherlv_3=(Token)match(input,179,FOLLOW_179_in_ruleARITHMETIC_OP14578); 

                        	newLeafNode(otherlv_3, grammarAccess.getARITHMETIC_OPAccess().getFsubKeyword_0_3());
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6949:7: otherlv_4= 'mul'
                    {
                    otherlv_4=(Token)match(input,180,FOLLOW_180_in_ruleARITHMETIC_OP14596); 

                        	newLeafNode(otherlv_4, grammarAccess.getARITHMETIC_OPAccess().getMulKeyword_0_4());
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6954:7: otherlv_5= 'fmul'
                    {
                    otherlv_5=(Token)match(input,181,FOLLOW_181_in_ruleARITHMETIC_OP14614); 

                        	newLeafNode(otherlv_5, grammarAccess.getARITHMETIC_OPAccess().getFmulKeyword_0_5());
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6959:7: otherlv_6= 'udiv'
                    {
                    otherlv_6=(Token)match(input,182,FOLLOW_182_in_ruleARITHMETIC_OP14632); 

                        	newLeafNode(otherlv_6, grammarAccess.getARITHMETIC_OPAccess().getUdivKeyword_0_6());
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6964:7: otherlv_7= 'sdiv'
                    {
                    otherlv_7=(Token)match(input,183,FOLLOW_183_in_ruleARITHMETIC_OP14650); 

                        	newLeafNode(otherlv_7, grammarAccess.getARITHMETIC_OPAccess().getSdivKeyword_0_7());
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6969:7: otherlv_8= 'fdiv'
                    {
                    otherlv_8=(Token)match(input,184,FOLLOW_184_in_ruleARITHMETIC_OP14668); 

                        	newLeafNode(otherlv_8, grammarAccess.getARITHMETIC_OPAccess().getFdivKeyword_0_8());
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6974:7: otherlv_9= 'urem'
                    {
                    otherlv_9=(Token)match(input,185,FOLLOW_185_in_ruleARITHMETIC_OP14686); 

                        	newLeafNode(otherlv_9, grammarAccess.getARITHMETIC_OPAccess().getUremKeyword_0_9());
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6979:7: otherlv_10= 'srem'
                    {
                    otherlv_10=(Token)match(input,186,FOLLOW_186_in_ruleARITHMETIC_OP14704); 

                        	newLeafNode(otherlv_10, grammarAccess.getARITHMETIC_OPAccess().getSremKeyword_0_10());
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6984:7: otherlv_11= 'frem'
                    {
                    otherlv_11=(Token)match(input,187,FOLLOW_187_in_ruleARITHMETIC_OP14722); 

                        	newLeafNode(otherlv_11, grammarAccess.getARITHMETIC_OPAccess().getFremKeyword_0_11());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6988:2: ( (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )? )?
            int alt187=2;
            int LA187_0 = input.LA(1);

            if ( ((LA187_0>=188 && LA187_0<=189)) ) {
                alt187=1;
            }
            switch (alt187) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6988:3: (otherlv_12= 'nsw' | otherlv_13= 'nuw' ) (otherlv_14= 'nuw' | otherlv_15= 'nsw' )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6988:3: (otherlv_12= 'nsw' | otherlv_13= 'nuw' )
                    int alt185=2;
                    int LA185_0 = input.LA(1);

                    if ( (LA185_0==188) ) {
                        alt185=1;
                    }
                    else if ( (LA185_0==189) ) {
                        alt185=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 185, 0, input);

                        throw nvae;
                    }
                    switch (alt185) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6988:5: otherlv_12= 'nsw'
                            {
                            otherlv_12=(Token)match(input,188,FOLLOW_188_in_ruleARITHMETIC_OP14737); 

                                	newLeafNode(otherlv_12, grammarAccess.getARITHMETIC_OPAccess().getNswKeyword_1_0_0());
                                

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6993:7: otherlv_13= 'nuw'
                            {
                            otherlv_13=(Token)match(input,189,FOLLOW_189_in_ruleARITHMETIC_OP14755); 

                                	newLeafNode(otherlv_13, grammarAccess.getARITHMETIC_OPAccess().getNuwKeyword_1_0_1());
                                

                            }
                            break;

                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6997:2: (otherlv_14= 'nuw' | otherlv_15= 'nsw' )?
                    int alt186=3;
                    int LA186_0 = input.LA(1);

                    if ( (LA186_0==189) ) {
                        alt186=1;
                    }
                    else if ( (LA186_0==188) ) {
                        alt186=2;
                    }
                    switch (alt186) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:6997:4: otherlv_14= 'nuw'
                            {
                            otherlv_14=(Token)match(input,189,FOLLOW_189_in_ruleARITHMETIC_OP14769); 

                                	newLeafNode(otherlv_14, grammarAccess.getARITHMETIC_OPAccess().getNuwKeyword_1_1_0());
                                

                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7002:7: otherlv_15= 'nsw'
                            {
                            otherlv_15=(Token)match(input,188,FOLLOW_188_in_ruleARITHMETIC_OP14787); 

                                	newLeafNode(otherlv_15, grammarAccess.getARITHMETIC_OPAccess().getNswKeyword_1_1_1());
                                

                            }
                            break;

                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7006:5: ( (lv_optype_16_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7007:1: (lv_optype_16_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7007:1: (lv_optype_16_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7008:3: lv_optype_16_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getARITHMETIC_OPAccess().getOptypeTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleARITHMETIC_OP14812);
            lv_optype_16_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getARITHMETIC_OPRule());
            	        }
                   		set(
                   			current, 
                   			"optype",
                    		lv_optype_16_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7024:2: ( (lv_value1_17_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7025:1: (lv_value1_17_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7025:1: (lv_value1_17_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7026:3: lv_value1_17_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getARITHMETIC_OPAccess().getValue1TypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleARITHMETIC_OP14833);
            lv_value1_17_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getARITHMETIC_OPRule());
            	        }
                   		set(
                   			current, 
                   			"value1",
                    		lv_value1_17_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_18=(Token)match(input,27,FOLLOW_27_in_ruleARITHMETIC_OP14845); 

                	newLeafNode(otherlv_18, grammarAccess.getARITHMETIC_OPAccess().getCommaKeyword_4());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7046:1: ( (lv_value2_19_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7047:1: (lv_value2_19_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7047:1: (lv_value2_19_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7048:3: lv_value2_19_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getARITHMETIC_OPAccess().getValue2TypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleARITHMETIC_OP14866);
            lv_value2_19_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getARITHMETIC_OPRule());
            	        }
                   		set(
                   			current, 
                   			"value2",
                    		lv_value2_19_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleARITHMETIC_OP"


    // $ANTLR start "entryRuleLOGICAL_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7072:1: entryRuleLOGICAL_OP returns [EObject current=null] : iv_ruleLOGICAL_OP= ruleLOGICAL_OP EOF ;
    public final EObject entryRuleLOGICAL_OP() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLOGICAL_OP = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7073:2: (iv_ruleLOGICAL_OP= ruleLOGICAL_OP EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7074:2: iv_ruleLOGICAL_OP= ruleLOGICAL_OP EOF
            {
             newCompositeNode(grammarAccess.getLOGICAL_OPRule()); 
            pushFollow(FOLLOW_ruleLOGICAL_OP_in_entryRuleLOGICAL_OP14902);
            iv_ruleLOGICAL_OP=ruleLOGICAL_OP();

            state._fsp--;

             current =iv_ruleLOGICAL_OP; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLOGICAL_OP14912); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLOGICAL_OP"


    // $ANTLR start "ruleLOGICAL_OP"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7081:1: ruleLOGICAL_OP returns [EObject current=null] : ( (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' ) ( (lv_optype_6_0= ruleType ) ) ( (lv_value1_7_0= ruleType ) ) otherlv_8= ',' ( (lv_value2_9_0= ruleType ) ) ) ;
    public final EObject ruleLOGICAL_OP() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_8=null;
        AntlrDatatypeRuleToken lv_optype_6_0 = null;

        AntlrDatatypeRuleToken lv_value1_7_0 = null;

        AntlrDatatypeRuleToken lv_value2_9_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7084:28: ( ( (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' ) ( (lv_optype_6_0= ruleType ) ) ( (lv_value1_7_0= ruleType ) ) otherlv_8= ',' ( (lv_value2_9_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7085:1: ( (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' ) ( (lv_optype_6_0= ruleType ) ) ( (lv_value1_7_0= ruleType ) ) otherlv_8= ',' ( (lv_value2_9_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7085:1: ( (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' ) ( (lv_optype_6_0= ruleType ) ) ( (lv_value1_7_0= ruleType ) ) otherlv_8= ',' ( (lv_value2_9_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7085:2: (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' ) ( (lv_optype_6_0= ruleType ) ) ( (lv_value1_7_0= ruleType ) ) otherlv_8= ',' ( (lv_value2_9_0= ruleType ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7085:2: (otherlv_0= 'shl' | otherlv_1= 'lshr' | otherlv_2= 'ashr' | otherlv_3= 'and' | otherlv_4= 'or' | otherlv_5= 'xor' )
            int alt188=6;
            switch ( input.LA(1) ) {
            case 190:
                {
                alt188=1;
                }
                break;
            case 191:
                {
                alt188=2;
                }
                break;
            case 192:
                {
                alt188=3;
                }
                break;
            case 77:
                {
                alt188=4;
                }
                break;
            case 79:
                {
                alt188=5;
                }
                break;
            case 80:
                {
                alt188=6;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 188, 0, input);

                throw nvae;
            }

            switch (alt188) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7085:4: otherlv_0= 'shl'
                    {
                    otherlv_0=(Token)match(input,190,FOLLOW_190_in_ruleLOGICAL_OP14950); 

                        	newLeafNode(otherlv_0, grammarAccess.getLOGICAL_OPAccess().getShlKeyword_0_0());
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7090:7: otherlv_1= 'lshr'
                    {
                    otherlv_1=(Token)match(input,191,FOLLOW_191_in_ruleLOGICAL_OP14968); 

                        	newLeafNode(otherlv_1, grammarAccess.getLOGICAL_OPAccess().getLshrKeyword_0_1());
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7095:7: otherlv_2= 'ashr'
                    {
                    otherlv_2=(Token)match(input,192,FOLLOW_192_in_ruleLOGICAL_OP14986); 

                        	newLeafNode(otherlv_2, grammarAccess.getLOGICAL_OPAccess().getAshrKeyword_0_2());
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7100:7: otherlv_3= 'and'
                    {
                    otherlv_3=(Token)match(input,77,FOLLOW_77_in_ruleLOGICAL_OP15004); 

                        	newLeafNode(otherlv_3, grammarAccess.getLOGICAL_OPAccess().getAndKeyword_0_3());
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7105:7: otherlv_4= 'or'
                    {
                    otherlv_4=(Token)match(input,79,FOLLOW_79_in_ruleLOGICAL_OP15022); 

                        	newLeafNode(otherlv_4, grammarAccess.getLOGICAL_OPAccess().getOrKeyword_0_4());
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7110:7: otherlv_5= 'xor'
                    {
                    otherlv_5=(Token)match(input,80,FOLLOW_80_in_ruleLOGICAL_OP15040); 

                        	newLeafNode(otherlv_5, grammarAccess.getLOGICAL_OPAccess().getXorKeyword_0_5());
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7114:2: ( (lv_optype_6_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7115:1: (lv_optype_6_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7115:1: (lv_optype_6_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7116:3: lv_optype_6_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getLOGICAL_OPAccess().getOptypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleLOGICAL_OP15062);
            lv_optype_6_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLOGICAL_OPRule());
            	        }
                   		set(
                   			current, 
                   			"optype",
                    		lv_optype_6_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7132:2: ( (lv_value1_7_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7133:1: (lv_value1_7_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7133:1: (lv_value1_7_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7134:3: lv_value1_7_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getLOGICAL_OPAccess().getValue1TypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleLOGICAL_OP15083);
            lv_value1_7_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLOGICAL_OPRule());
            	        }
                   		set(
                   			current, 
                   			"value1",
                    		lv_value1_7_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_8=(Token)match(input,27,FOLLOW_27_in_ruleLOGICAL_OP15095); 

                	newLeafNode(otherlv_8, grammarAccess.getLOGICAL_OPAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7154:1: ( (lv_value2_9_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7155:1: (lv_value2_9_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7155:1: (lv_value2_9_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7156:3: lv_value2_9_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getLOGICAL_OPAccess().getValue2TypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleLOGICAL_OP15116);
            lv_value2_9_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getLOGICAL_OPRule());
            	        }
                   		set(
                   			current, 
                   			"value2",
                    		lv_value2_9_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLOGICAL_OP"


    // $ANTLR start "entryRuleIndirectBranch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7180:1: entryRuleIndirectBranch returns [EObject current=null] : iv_ruleIndirectBranch= ruleIndirectBranch EOF ;
    public final EObject entryRuleIndirectBranch() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIndirectBranch = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7181:2: (iv_ruleIndirectBranch= ruleIndirectBranch EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7182:2: iv_ruleIndirectBranch= ruleIndirectBranch EOF
            {
             newCompositeNode(grammarAccess.getIndirectBranchRule()); 
            pushFollow(FOLLOW_ruleIndirectBranch_in_entryRuleIndirectBranch15152);
            iv_ruleIndirectBranch=ruleIndirectBranch();

            state._fsp--;

             current =iv_ruleIndirectBranch; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleIndirectBranch15162); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIndirectBranch"


    // $ANTLR start "ruleIndirectBranch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7189:1: ruleIndirectBranch returns [EObject current=null] : (otherlv_0= 'indirectbr' ( (lv_adresstype_1_0= ruleType ) ) ( (lv_adress_2_0= ruleType ) ) otherlv_3= ',' this_ARRAYL_4= RULE_ARRAYL ( (lv_lList_5_0= ruleLabelList ) )? this_ARRAYR_6= RULE_ARRAYR ) ;
    public final EObject ruleIndirectBranch() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token this_ARRAYL_4=null;
        Token this_ARRAYR_6=null;
        AntlrDatatypeRuleToken lv_adresstype_1_0 = null;

        AntlrDatatypeRuleToken lv_adress_2_0 = null;

        EObject lv_lList_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7192:28: ( (otherlv_0= 'indirectbr' ( (lv_adresstype_1_0= ruleType ) ) ( (lv_adress_2_0= ruleType ) ) otherlv_3= ',' this_ARRAYL_4= RULE_ARRAYL ( (lv_lList_5_0= ruleLabelList ) )? this_ARRAYR_6= RULE_ARRAYR ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7193:1: (otherlv_0= 'indirectbr' ( (lv_adresstype_1_0= ruleType ) ) ( (lv_adress_2_0= ruleType ) ) otherlv_3= ',' this_ARRAYL_4= RULE_ARRAYL ( (lv_lList_5_0= ruleLabelList ) )? this_ARRAYR_6= RULE_ARRAYR )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7193:1: (otherlv_0= 'indirectbr' ( (lv_adresstype_1_0= ruleType ) ) ( (lv_adress_2_0= ruleType ) ) otherlv_3= ',' this_ARRAYL_4= RULE_ARRAYL ( (lv_lList_5_0= ruleLabelList ) )? this_ARRAYR_6= RULE_ARRAYR )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7193:3: otherlv_0= 'indirectbr' ( (lv_adresstype_1_0= ruleType ) ) ( (lv_adress_2_0= ruleType ) ) otherlv_3= ',' this_ARRAYL_4= RULE_ARRAYL ( (lv_lList_5_0= ruleLabelList ) )? this_ARRAYR_6= RULE_ARRAYR
            {
            otherlv_0=(Token)match(input,193,FOLLOW_193_in_ruleIndirectBranch15199); 

                	newLeafNode(otherlv_0, grammarAccess.getIndirectBranchAccess().getIndirectbrKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7197:1: ( (lv_adresstype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7198:1: (lv_adresstype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7198:1: (lv_adresstype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7199:3: lv_adresstype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getIndirectBranchAccess().getAdresstypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleIndirectBranch15220);
            lv_adresstype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIndirectBranchRule());
            	        }
                   		set(
                   			current, 
                   			"adresstype",
                    		lv_adresstype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7215:2: ( (lv_adress_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7216:1: (lv_adress_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7216:1: (lv_adress_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7217:3: lv_adress_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getIndirectBranchAccess().getAdressTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleIndirectBranch15241);
            lv_adress_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getIndirectBranchRule());
            	        }
                   		set(
                   			current, 
                   			"adress",
                    		lv_adress_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleIndirectBranch15253); 

                	newLeafNode(otherlv_3, grammarAccess.getIndirectBranchAccess().getCommaKeyword_3());
                
            this_ARRAYL_4=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleIndirectBranch15264); 
             
                newLeafNode(this_ARRAYL_4, grammarAccess.getIndirectBranchAccess().getARRAYLTerminalRuleCall_4()); 
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7241:1: ( (lv_lList_5_0= ruleLabelList ) )?
            int alt189=2;
            int LA189_0 = input.LA(1);

            if ( ((LA189_0>=RULE_INT && LA189_0<=RULE_VAR_TYPE)||LA189_0==33||(LA189_0>=43 && LA189_0<=47)) ) {
                alt189=1;
            }
            switch (alt189) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7242:1: (lv_lList_5_0= ruleLabelList )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7242:1: (lv_lList_5_0= ruleLabelList )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7243:3: lv_lList_5_0= ruleLabelList
                    {
                     
                    	        newCompositeNode(grammarAccess.getIndirectBranchAccess().getLListLabelListParserRuleCall_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleLabelList_in_ruleIndirectBranch15284);
                    lv_lList_5_0=ruleLabelList();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getIndirectBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"lList",
                            		lv_lList_5_0, 
                            		"LabelList");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            this_ARRAYR_6=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleIndirectBranch15296); 
             
                newLeafNode(this_ARRAYR_6, grammarAccess.getIndirectBranchAccess().getARRAYRTerminalRuleCall_6()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIndirectBranch"


    // $ANTLR start "entryRuleLabelList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7271:1: entryRuleLabelList returns [EObject current=null] : iv_ruleLabelList= ruleLabelList EOF ;
    public final EObject entryRuleLabelList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLabelList = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7272:2: (iv_ruleLabelList= ruleLabelList EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7273:2: iv_ruleLabelList= ruleLabelList EOF
            {
             newCompositeNode(grammarAccess.getLabelListRule()); 
            pushFollow(FOLLOW_ruleLabelList_in_entryRuleLabelList15331);
            iv_ruleLabelList=ruleLabelList();

            state._fsp--;

             current =iv_ruleLabelList; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLabelList15341); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLabelList"


    // $ANTLR start "ruleLabelList"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7280:1: ruleLabelList returns [EObject current=null] : ( ( (lv_labeltype_0_0= ruleType ) ) ( (lv_labels_1_0= ruleType ) ) )+ ;
    public final EObject ruleLabelList() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_labeltype_0_0 = null;

        AntlrDatatypeRuleToken lv_labels_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7283:28: ( ( ( (lv_labeltype_0_0= ruleType ) ) ( (lv_labels_1_0= ruleType ) ) )+ )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7284:1: ( ( (lv_labeltype_0_0= ruleType ) ) ( (lv_labels_1_0= ruleType ) ) )+
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7284:1: ( ( (lv_labeltype_0_0= ruleType ) ) ( (lv_labels_1_0= ruleType ) ) )+
            int cnt190=0;
            loop190:
            do {
                int alt190=2;
                int LA190_0 = input.LA(1);

                if ( ((LA190_0>=RULE_INT && LA190_0<=RULE_VAR_TYPE)||LA190_0==33||(LA190_0>=43 && LA190_0<=47)) ) {
                    alt190=1;
                }


                switch (alt190) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7284:2: ( (lv_labeltype_0_0= ruleType ) ) ( (lv_labels_1_0= ruleType ) )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7284:2: ( (lv_labeltype_0_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7285:1: (lv_labeltype_0_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7285:1: (lv_labeltype_0_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7286:3: lv_labeltype_0_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLabelListAccess().getLabeltypeTypeParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleLabelList15387);
            	    lv_labeltype_0_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLabelListRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"labeltype",
            	            		lv_labeltype_0_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7302:2: ( (lv_labels_1_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7303:1: (lv_labels_1_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7303:1: (lv_labels_1_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7304:3: lv_labels_1_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getLabelListAccess().getLabelsTypeParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleLabelList15408);
            	    lv_labels_1_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getLabelListRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"labels",
            	            		lv_labels_1_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt190 >= 1 ) break loop190;
                        EarlyExitException eee =
                            new EarlyExitException(190, input);
                        throw eee;
                }
                cnt190++;
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLabelList"


    // $ANTLR start "entryRuleSwitch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7328:1: entryRuleSwitch returns [EObject current=null] : iv_ruleSwitch= ruleSwitch EOF ;
    public final EObject entryRuleSwitch() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSwitch = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7329:2: (iv_ruleSwitch= ruleSwitch EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7330:2: iv_ruleSwitch= ruleSwitch EOF
            {
             newCompositeNode(grammarAccess.getSwitchRule()); 
            pushFollow(FOLLOW_ruleSwitch_in_entryRuleSwitch15445);
            iv_ruleSwitch=ruleSwitch();

            state._fsp--;

             current =iv_ruleSwitch; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSwitch15455); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSwitch"


    // $ANTLR start "ruleSwitch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7337:1: ruleSwitch returns [EObject current=null] : (otherlv_0= 'switch' ( (lv_comptype_1_0= ruleType ) ) ( (lv_compvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_defaulttype_4_0= ruleType ) ) ( (lv_defaultvalue_5_0= ruleType ) ) this_ARRAYL_6= RULE_ARRAYL ( (lv_jTable_7_0= ruleJumpTable ) )? this_ARRAYR_8= RULE_ARRAYR ) ;
    public final EObject ruleSwitch() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token this_ARRAYL_6=null;
        Token this_ARRAYR_8=null;
        AntlrDatatypeRuleToken lv_comptype_1_0 = null;

        AntlrDatatypeRuleToken lv_compvalue_2_0 = null;

        AntlrDatatypeRuleToken lv_defaulttype_4_0 = null;

        AntlrDatatypeRuleToken lv_defaultvalue_5_0 = null;

        EObject lv_jTable_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7340:28: ( (otherlv_0= 'switch' ( (lv_comptype_1_0= ruleType ) ) ( (lv_compvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_defaulttype_4_0= ruleType ) ) ( (lv_defaultvalue_5_0= ruleType ) ) this_ARRAYL_6= RULE_ARRAYL ( (lv_jTable_7_0= ruleJumpTable ) )? this_ARRAYR_8= RULE_ARRAYR ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7341:1: (otherlv_0= 'switch' ( (lv_comptype_1_0= ruleType ) ) ( (lv_compvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_defaulttype_4_0= ruleType ) ) ( (lv_defaultvalue_5_0= ruleType ) ) this_ARRAYL_6= RULE_ARRAYL ( (lv_jTable_7_0= ruleJumpTable ) )? this_ARRAYR_8= RULE_ARRAYR )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7341:1: (otherlv_0= 'switch' ( (lv_comptype_1_0= ruleType ) ) ( (lv_compvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_defaulttype_4_0= ruleType ) ) ( (lv_defaultvalue_5_0= ruleType ) ) this_ARRAYL_6= RULE_ARRAYL ( (lv_jTable_7_0= ruleJumpTable ) )? this_ARRAYR_8= RULE_ARRAYR )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7341:3: otherlv_0= 'switch' ( (lv_comptype_1_0= ruleType ) ) ( (lv_compvalue_2_0= ruleType ) ) otherlv_3= ',' ( (lv_defaulttype_4_0= ruleType ) ) ( (lv_defaultvalue_5_0= ruleType ) ) this_ARRAYL_6= RULE_ARRAYL ( (lv_jTable_7_0= ruleJumpTable ) )? this_ARRAYR_8= RULE_ARRAYR
            {
            otherlv_0=(Token)match(input,194,FOLLOW_194_in_ruleSwitch15492); 

                	newLeafNode(otherlv_0, grammarAccess.getSwitchAccess().getSwitchKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7345:1: ( (lv_comptype_1_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7346:1: (lv_comptype_1_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7346:1: (lv_comptype_1_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7347:3: lv_comptype_1_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSwitchAccess().getComptypeTypeParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSwitch15513);
            lv_comptype_1_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSwitchRule());
            	        }
                   		set(
                   			current, 
                   			"comptype",
                    		lv_comptype_1_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7363:2: ( (lv_compvalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7364:1: (lv_compvalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7364:1: (lv_compvalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7365:3: lv_compvalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSwitchAccess().getCompvalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSwitch15534);
            lv_compvalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSwitchRule());
            	        }
                   		set(
                   			current, 
                   			"compvalue",
                    		lv_compvalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleSwitch15546); 

                	newLeafNode(otherlv_3, grammarAccess.getSwitchAccess().getCommaKeyword_3());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7385:1: ( (lv_defaulttype_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7386:1: (lv_defaulttype_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7386:1: (lv_defaulttype_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7387:3: lv_defaulttype_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSwitchAccess().getDefaulttypeTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSwitch15567);
            lv_defaulttype_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSwitchRule());
            	        }
                   		set(
                   			current, 
                   			"defaulttype",
                    		lv_defaulttype_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7403:2: ( (lv_defaultvalue_5_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7404:1: (lv_defaultvalue_5_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7404:1: (lv_defaultvalue_5_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7405:3: lv_defaultvalue_5_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getSwitchAccess().getDefaultvalueTypeParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleSwitch15588);
            lv_defaultvalue_5_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSwitchRule());
            	        }
                   		set(
                   			current, 
                   			"defaultvalue",
                    		lv_defaultvalue_5_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            this_ARRAYL_6=(Token)match(input,RULE_ARRAYL,FOLLOW_RULE_ARRAYL_in_ruleSwitch15599); 
             
                newLeafNode(this_ARRAYL_6, grammarAccess.getSwitchAccess().getARRAYLTerminalRuleCall_6()); 
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7425:1: ( (lv_jTable_7_0= ruleJumpTable ) )?
            int alt191=2;
            int LA191_0 = input.LA(1);

            if ( ((LA191_0>=RULE_INT && LA191_0<=RULE_VAR_TYPE)||LA191_0==33||(LA191_0>=43 && LA191_0<=47)) ) {
                alt191=1;
            }
            switch (alt191) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7426:1: (lv_jTable_7_0= ruleJumpTable )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7426:1: (lv_jTable_7_0= ruleJumpTable )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7427:3: lv_jTable_7_0= ruleJumpTable
                    {
                     
                    	        newCompositeNode(grammarAccess.getSwitchAccess().getJTableJumpTableParserRuleCall_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleJumpTable_in_ruleSwitch15619);
                    lv_jTable_7_0=ruleJumpTable();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSwitchRule());
                    	        }
                           		set(
                           			current, 
                           			"jTable",
                            		lv_jTable_7_0, 
                            		"JumpTable");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }
                    break;

            }

            this_ARRAYR_8=(Token)match(input,RULE_ARRAYR,FOLLOW_RULE_ARRAYR_in_ruleSwitch15631); 
             
                newLeafNode(this_ARRAYR_8, grammarAccess.getSwitchAccess().getARRAYRTerminalRuleCall_8()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSwitch"


    // $ANTLR start "entryRuleJumpTable"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7455:1: entryRuleJumpTable returns [EObject current=null] : iv_ruleJumpTable= ruleJumpTable EOF ;
    public final EObject entryRuleJumpTable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleJumpTable = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7456:2: (iv_ruleJumpTable= ruleJumpTable EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7457:2: iv_ruleJumpTable= ruleJumpTable EOF
            {
             newCompositeNode(grammarAccess.getJumpTableRule()); 
            pushFollow(FOLLOW_ruleJumpTable_in_entryRuleJumpTable15666);
            iv_ruleJumpTable=ruleJumpTable();

            state._fsp--;

             current =iv_ruleJumpTable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleJumpTable15676); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleJumpTable"


    // $ANTLR start "ruleJumpTable"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7464:1: ruleJumpTable returns [EObject current=null] : ( ( (lv_jtypes_0_0= ruleType ) ) ( (lv_jvalues_1_0= ruleType ) ) otherlv_2= ',' ( (lv_destinationtypes_3_0= ruleType ) ) ( (lv_destinations_4_0= ruleType ) ) )+ ;
    public final EObject ruleJumpTable() throws RecognitionException {
        EObject current = null;

        Token otherlv_2=null;
        AntlrDatatypeRuleToken lv_jtypes_0_0 = null;

        AntlrDatatypeRuleToken lv_jvalues_1_0 = null;

        AntlrDatatypeRuleToken lv_destinationtypes_3_0 = null;

        AntlrDatatypeRuleToken lv_destinations_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7467:28: ( ( ( (lv_jtypes_0_0= ruleType ) ) ( (lv_jvalues_1_0= ruleType ) ) otherlv_2= ',' ( (lv_destinationtypes_3_0= ruleType ) ) ( (lv_destinations_4_0= ruleType ) ) )+ )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7468:1: ( ( (lv_jtypes_0_0= ruleType ) ) ( (lv_jvalues_1_0= ruleType ) ) otherlv_2= ',' ( (lv_destinationtypes_3_0= ruleType ) ) ( (lv_destinations_4_0= ruleType ) ) )+
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7468:1: ( ( (lv_jtypes_0_0= ruleType ) ) ( (lv_jvalues_1_0= ruleType ) ) otherlv_2= ',' ( (lv_destinationtypes_3_0= ruleType ) ) ( (lv_destinations_4_0= ruleType ) ) )+
            int cnt192=0;
            loop192:
            do {
                int alt192=2;
                int LA192_0 = input.LA(1);

                if ( ((LA192_0>=RULE_INT && LA192_0<=RULE_VAR_TYPE)||LA192_0==33||(LA192_0>=43 && LA192_0<=47)) ) {
                    alt192=1;
                }


                switch (alt192) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7468:2: ( (lv_jtypes_0_0= ruleType ) ) ( (lv_jvalues_1_0= ruleType ) ) otherlv_2= ',' ( (lv_destinationtypes_3_0= ruleType ) ) ( (lv_destinations_4_0= ruleType ) )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7468:2: ( (lv_jtypes_0_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7469:1: (lv_jtypes_0_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7469:1: (lv_jtypes_0_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7470:3: lv_jtypes_0_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getJumpTableAccess().getJtypesTypeParserRuleCall_0_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleJumpTable15722);
            	    lv_jtypes_0_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getJumpTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"jtypes",
            	            		lv_jtypes_0_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7486:2: ( (lv_jvalues_1_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7487:1: (lv_jvalues_1_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7487:1: (lv_jvalues_1_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7488:3: lv_jvalues_1_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getJumpTableAccess().getJvaluesTypeParserRuleCall_1_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleJumpTable15743);
            	    lv_jvalues_1_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getJumpTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"jvalues",
            	            		lv_jvalues_1_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    otherlv_2=(Token)match(input,27,FOLLOW_27_in_ruleJumpTable15755); 

            	        	newLeafNode(otherlv_2, grammarAccess.getJumpTableAccess().getCommaKeyword_2());
            	        
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7508:1: ( (lv_destinationtypes_3_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7509:1: (lv_destinationtypes_3_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7509:1: (lv_destinationtypes_3_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7510:3: lv_destinationtypes_3_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getJumpTableAccess().getDestinationtypesTypeParserRuleCall_3_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleJumpTable15776);
            	    lv_destinationtypes_3_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getJumpTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"destinationtypes",
            	            		lv_destinationtypes_3_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }

            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7526:2: ( (lv_destinations_4_0= ruleType ) )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7527:1: (lv_destinations_4_0= ruleType )
            	    {
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7527:1: (lv_destinations_4_0= ruleType )
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7528:3: lv_destinations_4_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getJumpTableAccess().getDestinationsTypeParserRuleCall_4_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleJumpTable15797);
            	    lv_destinations_4_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getJumpTableRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"destinations",
            	            		lv_destinations_4_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt192 >= 1 ) break loop192;
                        EarlyExitException eee =
                            new EarlyExitException(192, input);
                        throw eee;
                }
                cnt192++;
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleJumpTable"


    // $ANTLR start "entryRuleInvoke"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7552:1: entryRuleInvoke returns [EObject current=null] : iv_ruleInvoke= ruleInvoke EOF ;
    public final EObject entryRuleInvoke() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInvoke = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7553:2: (iv_ruleInvoke= ruleInvoke EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7554:2: iv_ruleInvoke= ruleInvoke EOF
            {
             newCompositeNode(grammarAccess.getInvokeRule()); 
            pushFollow(FOLLOW_ruleInvoke_in_entryRuleInvoke15834);
            iv_ruleInvoke=ruleInvoke();

            state._fsp--;

             current =iv_ruleInvoke; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInvoke15844); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInvoke"


    // $ANTLR start "ruleInvoke"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7561:1: ruleInvoke returns [EObject current=null] : (otherlv_0= 'invoke' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_functiontype_3_0= ruleType ) ) ( (lv_functionvalue_4_0= ruleType ) ) ( (lv_pList_5_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* otherlv_7= 'to' ( (lv_totype_8_0= ruleType ) ) ( (lv_tovalue_9_0= ruleType ) ) otherlv_10= 'unwind' ( (lv_unwindtype_11_0= ruleType ) ) ( (lv_unwindvalue_12_0= ruleType ) ) ) ;
    public final EObject ruleInvoke() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        AntlrDatatypeRuleToken lv_functiontype_3_0 = null;

        AntlrDatatypeRuleToken lv_functionvalue_4_0 = null;

        EObject lv_pList_5_0 = null;

        AntlrDatatypeRuleToken lv_totype_8_0 = null;

        AntlrDatatypeRuleToken lv_tovalue_9_0 = null;

        AntlrDatatypeRuleToken lv_unwindtype_11_0 = null;

        AntlrDatatypeRuleToken lv_unwindvalue_12_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7564:28: ( (otherlv_0= 'invoke' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_functiontype_3_0= ruleType ) ) ( (lv_functionvalue_4_0= ruleType ) ) ( (lv_pList_5_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* otherlv_7= 'to' ( (lv_totype_8_0= ruleType ) ) ( (lv_tovalue_9_0= ruleType ) ) otherlv_10= 'unwind' ( (lv_unwindtype_11_0= ruleType ) ) ( (lv_unwindvalue_12_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7565:1: (otherlv_0= 'invoke' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_functiontype_3_0= ruleType ) ) ( (lv_functionvalue_4_0= ruleType ) ) ( (lv_pList_5_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* otherlv_7= 'to' ( (lv_totype_8_0= ruleType ) ) ( (lv_tovalue_9_0= ruleType ) ) otherlv_10= 'unwind' ( (lv_unwindtype_11_0= ruleType ) ) ( (lv_unwindvalue_12_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7565:1: (otherlv_0= 'invoke' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_functiontype_3_0= ruleType ) ) ( (lv_functionvalue_4_0= ruleType ) ) ( (lv_pList_5_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* otherlv_7= 'to' ( (lv_totype_8_0= ruleType ) ) ( (lv_tovalue_9_0= ruleType ) ) otherlv_10= 'unwind' ( (lv_unwindtype_11_0= ruleType ) ) ( (lv_unwindvalue_12_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7565:3: otherlv_0= 'invoke' ( ruleCallingConv )? ( ruleRETURN_ATTRIBUTES )? ( (lv_functiontype_3_0= ruleType ) ) ( (lv_functionvalue_4_0= ruleType ) ) ( (lv_pList_5_0= ruleParameterList ) ) ( ruleFUNCTION_ATTRIBUTES )* otherlv_7= 'to' ( (lv_totype_8_0= ruleType ) ) ( (lv_tovalue_9_0= ruleType ) ) otherlv_10= 'unwind' ( (lv_unwindtype_11_0= ruleType ) ) ( (lv_unwindvalue_12_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,195,FOLLOW_195_in_ruleInvoke15881); 

                	newLeafNode(otherlv_0, grammarAccess.getInvokeAccess().getInvokeKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7569:1: ( ruleCallingConv )?
            int alt193=2;
            int LA193_0 = input.LA(1);

            if ( ((LA193_0>=100 && LA193_0<=114)) ) {
                alt193=1;
            }
            switch (alt193) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7570:5: ruleCallingConv
                    {
                     
                            newCompositeNode(grammarAccess.getInvokeAccess().getCallingConvParserRuleCall_1()); 
                        
                    pushFollow(FOLLOW_ruleCallingConv_in_ruleInvoke15898);
                    ruleCallingConv();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7577:3: ( ruleRETURN_ATTRIBUTES )?
            int alt194=2;
            int LA194_0 = input.LA(1);

            if ( ((LA194_0>=91 && LA194_0<=98)) ) {
                alt194=1;
            }
            switch (alt194) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7578:5: ruleRETURN_ATTRIBUTES
                    {
                     
                            newCompositeNode(grammarAccess.getInvokeAccess().getRETURN_ATTRIBUTESParserRuleCall_2()); 
                        
                    pushFollow(FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleInvoke15916);
                    ruleRETURN_ATTRIBUTES();

                    state._fsp--;

                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7585:3: ( (lv_functiontype_3_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7586:1: (lv_functiontype_3_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7586:1: (lv_functiontype_3_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7587:3: lv_functiontype_3_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getFunctiontypeTypeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke15938);
            lv_functiontype_3_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"functiontype",
                    		lv_functiontype_3_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7603:2: ( (lv_functionvalue_4_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7604:1: (lv_functionvalue_4_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7604:1: (lv_functionvalue_4_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7605:3: lv_functionvalue_4_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getFunctionvalueTypeParserRuleCall_4_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke15959);
            lv_functionvalue_4_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"functionvalue",
                    		lv_functionvalue_4_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7621:2: ( (lv_pList_5_0= ruleParameterList ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7622:1: (lv_pList_5_0= ruleParameterList )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7622:1: (lv_pList_5_0= ruleParameterList )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7623:3: lv_pList_5_0= ruleParameterList
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getPListParameterListParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleParameterList_in_ruleInvoke15980);
            lv_pList_5_0=ruleParameterList();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"pList",
                    		lv_pList_5_0, 
                    		"ParameterList");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7639:2: ( ruleFUNCTION_ATTRIBUTES )*
            loop195:
            do {
                int alt195=2;
                int LA195_0 = input.LA(1);

                if ( ((LA195_0>=115 && LA195_0<=132)) ) {
                    alt195=1;
                }


                switch (alt195) {
            	case 1 :
            	    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7640:5: ruleFUNCTION_ATTRIBUTES
            	    {
            	     
            	            newCompositeNode(grammarAccess.getInvokeAccess().getFUNCTION_ATTRIBUTESParserRuleCall_6()); 
            	        
            	    pushFollow(FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleInvoke15997);
            	    ruleFUNCTION_ATTRIBUTES();

            	    state._fsp--;

            	     
            	            afterParserOrEnumRuleCall();
            	        

            	    }
            	    break;

            	default :
            	    break loop195;
                }
            } while (true);

            otherlv_7=(Token)match(input,136,FOLLOW_136_in_ruleInvoke16010); 

                	newLeafNode(otherlv_7, grammarAccess.getInvokeAccess().getToKeyword_7());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7651:1: ( (lv_totype_8_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7652:1: (lv_totype_8_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7652:1: (lv_totype_8_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7653:3: lv_totype_8_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getTotypeTypeParserRuleCall_8_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke16031);
            lv_totype_8_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"totype",
                    		lv_totype_8_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7669:2: ( (lv_tovalue_9_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7670:1: (lv_tovalue_9_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7670:1: (lv_tovalue_9_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7671:3: lv_tovalue_9_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getTovalueTypeParserRuleCall_9_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke16052);
            lv_tovalue_9_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"tovalue",
                    		lv_tovalue_9_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_10=(Token)match(input,196,FOLLOW_196_in_ruleInvoke16064); 

                	newLeafNode(otherlv_10, grammarAccess.getInvokeAccess().getUnwindKeyword_10());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7691:1: ( (lv_unwindtype_11_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7692:1: (lv_unwindtype_11_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7692:1: (lv_unwindtype_11_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7693:3: lv_unwindtype_11_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getUnwindtypeTypeParserRuleCall_11_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke16085);
            lv_unwindtype_11_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"unwindtype",
                    		lv_unwindtype_11_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7709:2: ( (lv_unwindvalue_12_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7710:1: (lv_unwindvalue_12_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7710:1: (lv_unwindvalue_12_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7711:3: lv_unwindvalue_12_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getInvokeAccess().getUnwindvalueTypeParserRuleCall_12_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleInvoke16106);
            lv_unwindvalue_12_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getInvokeRule());
            	        }
                   		set(
                   			current, 
                   			"unwindvalue",
                    		lv_unwindvalue_12_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInvoke"


    // $ANTLR start "entryRuleResume"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7735:1: entryRuleResume returns [EObject current=null] : iv_ruleResume= ruleResume EOF ;
    public final EObject entryRuleResume() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleResume = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7736:2: (iv_ruleResume= ruleResume EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7737:2: iv_ruleResume= ruleResume EOF
            {
             newCompositeNode(grammarAccess.getResumeRule()); 
            pushFollow(FOLLOW_ruleResume_in_entryRuleResume16142);
            iv_ruleResume=ruleResume();

            state._fsp--;

             current =iv_ruleResume; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleResume16152); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleResume"


    // $ANTLR start "ruleResume"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7744:1: ruleResume returns [EObject current=null] : (otherlv_0= 'resume' ( (lv_resumestruct_1_0= ruleStructure ) ) ( (lv_resumevalue_2_0= ruleType ) ) ) ;
    public final EObject ruleResume() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_resumestruct_1_0 = null;

        AntlrDatatypeRuleToken lv_resumevalue_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7747:28: ( (otherlv_0= 'resume' ( (lv_resumestruct_1_0= ruleStructure ) ) ( (lv_resumevalue_2_0= ruleType ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7748:1: (otherlv_0= 'resume' ( (lv_resumestruct_1_0= ruleStructure ) ) ( (lv_resumevalue_2_0= ruleType ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7748:1: (otherlv_0= 'resume' ( (lv_resumestruct_1_0= ruleStructure ) ) ( (lv_resumevalue_2_0= ruleType ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7748:3: otherlv_0= 'resume' ( (lv_resumestruct_1_0= ruleStructure ) ) ( (lv_resumevalue_2_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,197,FOLLOW_197_in_ruleResume16189); 

                	newLeafNode(otherlv_0, grammarAccess.getResumeAccess().getResumeKeyword_0());
                
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7752:1: ( (lv_resumestruct_1_0= ruleStructure ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7753:1: (lv_resumestruct_1_0= ruleStructure )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7753:1: (lv_resumestruct_1_0= ruleStructure )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7754:3: lv_resumestruct_1_0= ruleStructure
            {
             
            	        newCompositeNode(grammarAccess.getResumeAccess().getResumestructStructureParserRuleCall_1_0()); 
            	    
            pushFollow(FOLLOW_ruleStructure_in_ruleResume16210);
            lv_resumestruct_1_0=ruleStructure();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getResumeRule());
            	        }
                   		set(
                   			current, 
                   			"resumestruct",
                    		lv_resumestruct_1_0, 
                    		"Structure");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7770:2: ( (lv_resumevalue_2_0= ruleType ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7771:1: (lv_resumevalue_2_0= ruleType )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7771:1: (lv_resumevalue_2_0= ruleType )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7772:3: lv_resumevalue_2_0= ruleType
            {
             
            	        newCompositeNode(grammarAccess.getResumeAccess().getResumevalueTypeParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleType_in_ruleResume16231);
            lv_resumevalue_2_0=ruleType();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getResumeRule());
            	        }
                   		set(
                   			current, 
                   			"resumevalue",
                    		lv_resumevalue_2_0, 
                    		"Type");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleResume"


    // $ANTLR start "entryRuleUnreachable"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7796:1: entryRuleUnreachable returns [EObject current=null] : iv_ruleUnreachable= ruleUnreachable EOF ;
    public final EObject entryRuleUnreachable() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnreachable = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7797:2: (iv_ruleUnreachable= ruleUnreachable EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7798:2: iv_ruleUnreachable= ruleUnreachable EOF
            {
             newCompositeNode(grammarAccess.getUnreachableRule()); 
            pushFollow(FOLLOW_ruleUnreachable_in_entryRuleUnreachable16267);
            iv_ruleUnreachable=ruleUnreachable();

            state._fsp--;

             current =iv_ruleUnreachable; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnreachable16277); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnreachable"


    // $ANTLR start "ruleUnreachable"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7805:1: ruleUnreachable returns [EObject current=null] : ( () otherlv_1= 'unreachable' ) ;
    public final EObject ruleUnreachable() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7808:28: ( ( () otherlv_1= 'unreachable' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7809:1: ( () otherlv_1= 'unreachable' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7809:1: ( () otherlv_1= 'unreachable' )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7809:2: () otherlv_1= 'unreachable'
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7809:2: ()
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7810:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getUnreachableAccess().getUnreachableAction_0(),
                        current);
                

            }

            otherlv_1=(Token)match(input,198,FOLLOW_198_in_ruleUnreachable16323); 

                	newLeafNode(otherlv_1, grammarAccess.getUnreachableAccess().getUnreachableKeyword_1());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnreachable"


    // $ANTLR start "entryRuleReturn"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7827:1: entryRuleReturn returns [EObject current=null] : iv_ruleReturn= ruleReturn EOF ;
    public final EObject entryRuleReturn() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReturn = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7828:2: (iv_ruleReturn= ruleReturn EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7829:2: iv_ruleReturn= ruleReturn EOF
            {
             newCompositeNode(grammarAccess.getReturnRule()); 
            pushFollow(FOLLOW_ruleReturn_in_entryRuleReturn16359);
            iv_ruleReturn=ruleReturn();

            state._fsp--;

             current =iv_ruleReturn; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleReturn16369); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReturn"


    // $ANTLR start "ruleReturn"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7836:1: ruleReturn returns [EObject current=null] : ( ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? ) | (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? ) ) ;
    public final EObject ruleReturn() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token this_INT_6=null;
        Token otherlv_7=null;
        Token otherlv_10=null;
        Token otherlv_11=null;
        Token otherlv_12=null;
        Token this_INT_13=null;
        AntlrDatatypeRuleToken lv_returntype_8_0 = null;

        AntlrDatatypeRuleToken lv_returnvalue_9_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7839:28: ( ( ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? ) | (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:1: ( ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? ) | (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:1: ( ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? ) | (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? ) )
            int alt198=2;
            alt198 = dfa198.predict(input);
            switch (alt198) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:2: ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:2: ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:3: () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )?
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7840:3: ()
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7841:5: 
                    {

                            current = forceCreateModelElement(
                                grammarAccess.getReturnAccess().getReturnAction_0_0(),
                                current);
                        

                    }

                    otherlv_1=(Token)match(input,199,FOLLOW_199_in_ruleReturn16416); 

                        	newLeafNode(otherlv_1, grammarAccess.getReturnAccess().getRetKeyword_0_1());
                        
                    otherlv_2=(Token)match(input,43,FOLLOW_43_in_ruleReturn16428); 

                        	newLeafNode(otherlv_2, grammarAccess.getReturnAccess().getVoidKeyword_0_2());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7854:1: (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )?
                    int alt196=2;
                    int LA196_0 = input.LA(1);

                    if ( (LA196_0==27) ) {
                        alt196=1;
                    }
                    switch (alt196) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7854:3: otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT
                            {
                            otherlv_3=(Token)match(input,27,FOLLOW_27_in_ruleReturn16441); 

                                	newLeafNode(otherlv_3, grammarAccess.getReturnAccess().getCommaKeyword_0_3_0());
                                
                            otherlv_4=(Token)match(input,200,FOLLOW_200_in_ruleReturn16453); 

                                	newLeafNode(otherlv_4, grammarAccess.getReturnAccess().getDbgKeyword_0_3_1());
                                
                            otherlv_5=(Token)match(input,201,FOLLOW_201_in_ruleReturn16465); 

                                	newLeafNode(otherlv_5, grammarAccess.getReturnAccess().getExclamationMarkKeyword_0_3_2());
                                
                            this_INT_6=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleReturn16476); 
                             
                                newLeafNode(this_INT_6, grammarAccess.getReturnAccess().getINTTerminalRuleCall_0_3_3()); 
                                

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7871:6: (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7871:6: (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7871:8: otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )?
                    {
                    otherlv_7=(Token)match(input,199,FOLLOW_199_in_ruleReturn16497); 

                        	newLeafNode(otherlv_7, grammarAccess.getReturnAccess().getRetKeyword_1_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7875:1: ( (lv_returntype_8_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7876:1: (lv_returntype_8_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7876:1: (lv_returntype_8_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7877:3: lv_returntype_8_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getReturnAccess().getReturntypeTypeParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleReturn16518);
                    lv_returntype_8_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getReturnRule());
                    	        }
                           		set(
                           			current, 
                           			"returntype",
                            		lv_returntype_8_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7893:2: ( (lv_returnvalue_9_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7894:1: (lv_returnvalue_9_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7894:1: (lv_returnvalue_9_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7895:3: lv_returnvalue_9_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getReturnAccess().getReturnvalueTypeParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleReturn16539);
                    lv_returnvalue_9_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getReturnRule());
                    	        }
                           		set(
                           			current, 
                           			"returnvalue",
                            		lv_returnvalue_9_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7911:2: (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )?
                    int alt197=2;
                    int LA197_0 = input.LA(1);

                    if ( (LA197_0==27) ) {
                        alt197=1;
                    }
                    switch (alt197) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7911:4: otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT
                            {
                            otherlv_10=(Token)match(input,27,FOLLOW_27_in_ruleReturn16552); 

                                	newLeafNode(otherlv_10, grammarAccess.getReturnAccess().getCommaKeyword_1_3_0());
                                
                            otherlv_11=(Token)match(input,200,FOLLOW_200_in_ruleReturn16564); 

                                	newLeafNode(otherlv_11, grammarAccess.getReturnAccess().getDbgKeyword_1_3_1());
                                
                            otherlv_12=(Token)match(input,201,FOLLOW_201_in_ruleReturn16576); 

                                	newLeafNode(otherlv_12, grammarAccess.getReturnAccess().getExclamationMarkKeyword_1_3_2());
                                
                            this_INT_13=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleReturn16587); 
                             
                                newLeafNode(this_INT_13, grammarAccess.getReturnAccess().getINTTerminalRuleCall_1_3_3()); 
                                

                            }
                            break;

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReturn"


    // $ANTLR start "entryRuleBranch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7935:1: entryRuleBranch returns [EObject current=null] : iv_ruleBranch= ruleBranch EOF ;
    public final EObject entryRuleBranch() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBranch = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7936:2: (iv_ruleBranch= ruleBranch EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7937:2: iv_ruleBranch= ruleBranch EOF
            {
             newCompositeNode(grammarAccess.getBranchRule()); 
            pushFollow(FOLLOW_ruleBranch_in_entryRuleBranch16625);
            iv_ruleBranch=ruleBranch();

            state._fsp--;

             current =iv_ruleBranch; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleBranch16635); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBranch"


    // $ANTLR start "ruleBranch"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7944:1: ruleBranch returns [EObject current=null] : ( (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) ) | (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) ) ) ;
    public final EObject ruleBranch() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_destinationtype_1_0 = null;

        AntlrDatatypeRuleToken lv_destination_2_0 = null;

        AntlrDatatypeRuleToken lv_condtype_4_0 = null;

        AntlrDatatypeRuleToken lv_condvalue_5_0 = null;

        AntlrDatatypeRuleToken lv_labelTruetype_7_0 = null;

        AntlrDatatypeRuleToken lv_labelTrue_8_0 = null;

        AntlrDatatypeRuleToken lv_labelFalsetype_10_0 = null;

        AntlrDatatypeRuleToken lv_labelFalse_11_0 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7947:28: ( ( (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) ) | (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) ) ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7948:1: ( (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) ) | (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) ) )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7948:1: ( (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) ) | (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) ) )
            int alt199=2;
            alt199 = dfa199.predict(input);
            switch (alt199) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7948:2: (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7948:2: (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7948:4: otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) )
                    {
                    otherlv_0=(Token)match(input,202,FOLLOW_202_in_ruleBranch16673); 

                        	newLeafNode(otherlv_0, grammarAccess.getBranchAccess().getBrKeyword_0_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7952:1: ( (lv_destinationtype_1_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7953:1: (lv_destinationtype_1_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7953:1: (lv_destinationtype_1_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7954:3: lv_destinationtype_1_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getDestinationtypeTypeParserRuleCall_0_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16694);
                    lv_destinationtype_1_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"destinationtype",
                            		lv_destinationtype_1_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7970:2: ( (lv_destination_2_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7971:1: (lv_destination_2_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7971:1: (lv_destination_2_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7972:3: lv_destination_2_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getDestinationTypeParserRuleCall_0_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16715);
                    lv_destination_2_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"destination",
                            		lv_destination_2_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7989:6: (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7989:6: (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7989:8: otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) )
                    {
                    otherlv_3=(Token)match(input,202,FOLLOW_202_in_ruleBranch16735); 

                        	newLeafNode(otherlv_3, grammarAccess.getBranchAccess().getBrKeyword_1_0());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7993:1: ( (lv_condtype_4_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7994:1: (lv_condtype_4_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7994:1: (lv_condtype_4_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:7995:3: lv_condtype_4_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getCondtypeTypeParserRuleCall_1_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16756);
                    lv_condtype_4_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"condtype",
                            		lv_condtype_4_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8011:2: ( (lv_condvalue_5_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8012:1: (lv_condvalue_5_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8012:1: (lv_condvalue_5_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8013:3: lv_condvalue_5_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getCondvalueTypeParserRuleCall_1_2_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16777);
                    lv_condvalue_5_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"condvalue",
                            		lv_condvalue_5_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleBranch16789); 

                        	newLeafNode(otherlv_6, grammarAccess.getBranchAccess().getCommaKeyword_1_3());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8033:1: ( (lv_labelTruetype_7_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8034:1: (lv_labelTruetype_7_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8034:1: (lv_labelTruetype_7_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8035:3: lv_labelTruetype_7_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getLabelTruetypeTypeParserRuleCall_1_4_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16810);
                    lv_labelTruetype_7_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"labelTruetype",
                            		lv_labelTruetype_7_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8051:2: ( (lv_labelTrue_8_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8052:1: (lv_labelTrue_8_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8052:1: (lv_labelTrue_8_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8053:3: lv_labelTrue_8_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getLabelTrueTypeParserRuleCall_1_5_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16831);
                    lv_labelTrue_8_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"labelTrue",
                            		lv_labelTrue_8_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_9=(Token)match(input,27,FOLLOW_27_in_ruleBranch16843); 

                        	newLeafNode(otherlv_9, grammarAccess.getBranchAccess().getCommaKeyword_1_6());
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8073:1: ( (lv_labelFalsetype_10_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8074:1: (lv_labelFalsetype_10_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8074:1: (lv_labelFalsetype_10_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8075:3: lv_labelFalsetype_10_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getLabelFalsetypeTypeParserRuleCall_1_7_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16864);
                    lv_labelFalsetype_10_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"labelFalsetype",
                            		lv_labelFalsetype_10_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8091:2: ( (lv_labelFalse_11_0= ruleType ) )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8092:1: (lv_labelFalse_11_0= ruleType )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8092:1: (lv_labelFalse_11_0= ruleType )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8093:3: lv_labelFalse_11_0= ruleType
                    {
                     
                    	        newCompositeNode(grammarAccess.getBranchAccess().getLabelFalseTypeParserRuleCall_1_8_0()); 
                    	    
                    pushFollow(FOLLOW_ruleType_in_ruleBranch16885);
                    lv_labelFalse_11_0=ruleType();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getBranchRule());
                    	        }
                           		set(
                           			current, 
                           			"labelFalse",
                            		lv_labelFalse_11_0, 
                            		"Type");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBranch"


    // $ANTLR start "entryRuleVISIBILITY"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8117:1: entryRuleVISIBILITY returns [String current=null] : iv_ruleVISIBILITY= ruleVISIBILITY EOF ;
    public final String entryRuleVISIBILITY() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleVISIBILITY = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8118:2: (iv_ruleVISIBILITY= ruleVISIBILITY EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8119:2: iv_ruleVISIBILITY= ruleVISIBILITY EOF
            {
             newCompositeNode(grammarAccess.getVISIBILITYRule()); 
            pushFollow(FOLLOW_ruleVISIBILITY_in_entryRuleVISIBILITY16923);
            iv_ruleVISIBILITY=ruleVISIBILITY();

            state._fsp--;

             current =iv_ruleVISIBILITY.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleVISIBILITY16934); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVISIBILITY"


    // $ANTLR start "ruleVISIBILITY"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8126:1: ruleVISIBILITY returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'default' | kw= 'hidden' | kw= 'protected' ) ;
    public final AntlrDatatypeRuleToken ruleVISIBILITY() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8129:28: ( (kw= 'default' | kw= 'hidden' | kw= 'protected' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8130:1: (kw= 'default' | kw= 'hidden' | kw= 'protected' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8130:1: (kw= 'default' | kw= 'hidden' | kw= 'protected' )
            int alt200=3;
            switch ( input.LA(1) ) {
            case 203:
                {
                alt200=1;
                }
                break;
            case 204:
                {
                alt200=2;
                }
                break;
            case 205:
                {
                alt200=3;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 200, 0, input);

                throw nvae;
            }

            switch (alt200) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8131:2: kw= 'default'
                    {
                    kw=(Token)match(input,203,FOLLOW_203_in_ruleVISIBILITY16972); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getVISIBILITYAccess().getDefaultKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8138:2: kw= 'hidden'
                    {
                    kw=(Token)match(input,204,FOLLOW_204_in_ruleVISIBILITY16991); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getVISIBILITYAccess().getHiddenKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8145:2: kw= 'protected'
                    {
                    kw=(Token)match(input,205,FOLLOW_205_in_ruleVISIBILITY17010); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getVISIBILITYAccess().getProtectedKeyword_2()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVISIBILITY"


    // $ANTLR start "entryRuleLINKAGE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8158:1: entryRuleLINKAGE returns [String current=null] : iv_ruleLINKAGE= ruleLINKAGE EOF ;
    public final String entryRuleLINKAGE() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleLINKAGE = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8159:2: (iv_ruleLINKAGE= ruleLINKAGE EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8160:2: iv_ruleLINKAGE= ruleLINKAGE EOF
            {
             newCompositeNode(grammarAccess.getLINKAGERule()); 
            pushFollow(FOLLOW_ruleLINKAGE_in_entryRuleLINKAGE17051);
            iv_ruleLINKAGE=ruleLINKAGE();

            state._fsp--;

             current =iv_ruleLINKAGE.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLINKAGE17062); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLINKAGE"


    // $ANTLR start "ruleLINKAGE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8167:1: ruleLINKAGE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'available_externally' | kw= 'linkonce' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'linkonce_odr_auto_hide' | kw= 'dllimport' | kw= 'dllexport' | this_ALIAS_LINKAGE_12= ruleALIAS_LINKAGE ) ;
    public final AntlrDatatypeRuleToken ruleLINKAGE() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        AntlrDatatypeRuleToken this_ALIAS_LINKAGE_12 = null;


         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8170:28: ( (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'available_externally' | kw= 'linkonce' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'linkonce_odr_auto_hide' | kw= 'dllimport' | kw= 'dllexport' | this_ALIAS_LINKAGE_12= ruleALIAS_LINKAGE ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8171:1: (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'available_externally' | kw= 'linkonce' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'linkonce_odr_auto_hide' | kw= 'dllimport' | kw= 'dllexport' | this_ALIAS_LINKAGE_12= ruleALIAS_LINKAGE )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8171:1: (kw= 'private' | kw= 'linker_private' | kw= 'linker_private_weak' | kw= 'available_externally' | kw= 'linkonce' | kw= 'common' | kw= 'appending' | kw= 'extern_weak' | kw= 'linkonce_odr' | kw= 'linkonce_odr_auto_hide' | kw= 'dllimport' | kw= 'dllexport' | this_ALIAS_LINKAGE_12= ruleALIAS_LINKAGE )
            int alt201=13;
            switch ( input.LA(1) ) {
            case 206:
                {
                alt201=1;
                }
                break;
            case 207:
                {
                alt201=2;
                }
                break;
            case 208:
                {
                alt201=3;
                }
                break;
            case 209:
                {
                alt201=4;
                }
                break;
            case 210:
                {
                alt201=5;
                }
                break;
            case 211:
                {
                alt201=6;
                }
                break;
            case 212:
                {
                alt201=7;
                }
                break;
            case 213:
                {
                alt201=8;
                }
                break;
            case 214:
                {
                alt201=9;
                }
                break;
            case 215:
                {
                alt201=10;
                }
                break;
            case 216:
                {
                alt201=11;
                }
                break;
            case 217:
                {
                alt201=12;
                }
                break;
            case 218:
            case 219:
            case 220:
            case 221:
                {
                alt201=13;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 201, 0, input);

                throw nvae;
            }

            switch (alt201) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8172:2: kw= 'private'
                    {
                    kw=(Token)match(input,206,FOLLOW_206_in_ruleLINKAGE17100); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getPrivateKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8179:2: kw= 'linker_private'
                    {
                    kw=(Token)match(input,207,FOLLOW_207_in_ruleLINKAGE17119); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getLinker_privateKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8186:2: kw= 'linker_private_weak'
                    {
                    kw=(Token)match(input,208,FOLLOW_208_in_ruleLINKAGE17138); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getLinker_private_weakKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8193:2: kw= 'available_externally'
                    {
                    kw=(Token)match(input,209,FOLLOW_209_in_ruleLINKAGE17157); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getAvailable_externallyKeyword_3()); 
                        

                    }
                    break;
                case 5 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8200:2: kw= 'linkonce'
                    {
                    kw=(Token)match(input,210,FOLLOW_210_in_ruleLINKAGE17176); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getLinkonceKeyword_4()); 
                        

                    }
                    break;
                case 6 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8207:2: kw= 'common'
                    {
                    kw=(Token)match(input,211,FOLLOW_211_in_ruleLINKAGE17195); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getCommonKeyword_5()); 
                        

                    }
                    break;
                case 7 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8214:2: kw= 'appending'
                    {
                    kw=(Token)match(input,212,FOLLOW_212_in_ruleLINKAGE17214); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getAppendingKeyword_6()); 
                        

                    }
                    break;
                case 8 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8221:2: kw= 'extern_weak'
                    {
                    kw=(Token)match(input,213,FOLLOW_213_in_ruleLINKAGE17233); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getExtern_weakKeyword_7()); 
                        

                    }
                    break;
                case 9 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8228:2: kw= 'linkonce_odr'
                    {
                    kw=(Token)match(input,214,FOLLOW_214_in_ruleLINKAGE17252); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getLinkonce_odrKeyword_8()); 
                        

                    }
                    break;
                case 10 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8235:2: kw= 'linkonce_odr_auto_hide'
                    {
                    kw=(Token)match(input,215,FOLLOW_215_in_ruleLINKAGE17271); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getLinkonce_odr_auto_hideKeyword_9()); 
                        

                    }
                    break;
                case 11 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8242:2: kw= 'dllimport'
                    {
                    kw=(Token)match(input,216,FOLLOW_216_in_ruleLINKAGE17290); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getDllimportKeyword_10()); 
                        

                    }
                    break;
                case 12 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8249:2: kw= 'dllexport'
                    {
                    kw=(Token)match(input,217,FOLLOW_217_in_ruleLINKAGE17309); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getLINKAGEAccess().getDllexportKeyword_11()); 
                        

                    }
                    break;
                case 13 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8256:5: this_ALIAS_LINKAGE_12= ruleALIAS_LINKAGE
                    {
                     
                            newCompositeNode(grammarAccess.getLINKAGEAccess().getALIAS_LINKAGEParserRuleCall_12()); 
                        
                    pushFollow(FOLLOW_ruleALIAS_LINKAGE_in_ruleLINKAGE17337);
                    this_ALIAS_LINKAGE_12=ruleALIAS_LINKAGE();

                    state._fsp--;


                    		current.merge(this_ALIAS_LINKAGE_12);
                        
                     
                            afterParserOrEnumRuleCall();
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLINKAGE"


    // $ANTLR start "entryRuleALIAS_LINKAGE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8274:1: entryRuleALIAS_LINKAGE returns [String current=null] : iv_ruleALIAS_LINKAGE= ruleALIAS_LINKAGE EOF ;
    public final String entryRuleALIAS_LINKAGE() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleALIAS_LINKAGE = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8275:2: (iv_ruleALIAS_LINKAGE= ruleALIAS_LINKAGE EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8276:2: iv_ruleALIAS_LINKAGE= ruleALIAS_LINKAGE EOF
            {
             newCompositeNode(grammarAccess.getALIAS_LINKAGERule()); 
            pushFollow(FOLLOW_ruleALIAS_LINKAGE_in_entryRuleALIAS_LINKAGE17383);
            iv_ruleALIAS_LINKAGE=ruleALIAS_LINKAGE();

            state._fsp--;

             current =iv_ruleALIAS_LINKAGE.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleALIAS_LINKAGE17394); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleALIAS_LINKAGE"


    // $ANTLR start "ruleALIAS_LINKAGE"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8283:1: ruleALIAS_LINKAGE returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'external' | kw= 'internal' | kw= 'weak' | kw= 'weak_odr' ) ;
    public final AntlrDatatypeRuleToken ruleALIAS_LINKAGE() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8286:28: ( (kw= 'external' | kw= 'internal' | kw= 'weak' | kw= 'weak_odr' ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8287:1: (kw= 'external' | kw= 'internal' | kw= 'weak' | kw= 'weak_odr' )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8287:1: (kw= 'external' | kw= 'internal' | kw= 'weak' | kw= 'weak_odr' )
            int alt202=4;
            switch ( input.LA(1) ) {
            case 218:
                {
                alt202=1;
                }
                break;
            case 219:
                {
                alt202=2;
                }
                break;
            case 220:
                {
                alt202=3;
                }
                break;
            case 221:
                {
                alt202=4;
                }
                break;
            default:
                NoViableAltException nvae =
                    new NoViableAltException("", 202, 0, input);

                throw nvae;
            }

            switch (alt202) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8288:2: kw= 'external'
                    {
                    kw=(Token)match(input,218,FOLLOW_218_in_ruleALIAS_LINKAGE17432); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getALIAS_LINKAGEAccess().getExternalKeyword_0()); 
                        

                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8295:2: kw= 'internal'
                    {
                    kw=(Token)match(input,219,FOLLOW_219_in_ruleALIAS_LINKAGE17451); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getALIAS_LINKAGEAccess().getInternalKeyword_1()); 
                        

                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8302:2: kw= 'weak'
                    {
                    kw=(Token)match(input,220,FOLLOW_220_in_ruleALIAS_LINKAGE17470); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getALIAS_LINKAGEAccess().getWeakKeyword_2()); 
                        

                    }
                    break;
                case 4 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8309:2: kw= 'weak_odr'
                    {
                    kw=(Token)match(input,221,FOLLOW_221_in_ruleALIAS_LINKAGE17489); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getALIAS_LINKAGEAccess().getWeak_odrKeyword_3()); 
                        

                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleALIAS_LINKAGE"


    // $ANTLR start "entryRuleMetadataValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8322:1: entryRuleMetadataValue returns [String current=null] : iv_ruleMetadataValue= ruleMetadataValue EOF ;
    public final String entryRuleMetadataValue() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleMetadataValue = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8323:2: (iv_ruleMetadataValue= ruleMetadataValue EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8324:2: iv_ruleMetadataValue= ruleMetadataValue EOF
            {
             newCompositeNode(grammarAccess.getMetadataValueRule()); 
            pushFollow(FOLLOW_ruleMetadataValue_in_entryRuleMetadataValue17530);
            iv_ruleMetadataValue=ruleMetadataValue();

            state._fsp--;

             current =iv_ruleMetadataValue.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMetadataValue17541); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMetadataValue"


    // $ANTLR start "ruleMetadataValue"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8331:1: ruleMetadataValue returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) ) (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )? ) ;
    public final AntlrDatatypeRuleToken ruleMetadataValue() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_INT_1=null;
        Token this_NOBRACKET_3=null;
        Token this_NOBRACKET_6=null;
        Token this_INT_9=null;
        Token this_NOBRACKET_11=null;
        Token this_NOBRACKET_14=null;
        Token this_STRING_21=null;
        Token this_INT_25=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8334:28: ( ( ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) ) (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )? ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:1: ( ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) ) (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )? )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:1: ( ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) ) (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )? )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:2: ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) ) (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )?
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:2: ( (kw= '!' this_INT_1= RULE_INT ) | (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET ) )
            int alt203=3;
            int LA203_0 = input.LA(1);

            if ( (LA203_0==201) ) {
                int LA203_1 = input.LA(2);

                if ( (LA203_1==RULE_INT) ) {
                    alt203=1;
                }
                else if ( (LA203_1==RULE_NOBRACKET) ) {
                    alt203=3;
                }
                else {
                    NoViableAltException nvae =
                        new NoViableAltException("", 203, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA203_0==222) ) {
                alt203=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 203, 0, input);

                throw nvae;
            }
            switch (alt203) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:3: (kw= '!' this_INT_1= RULE_INT )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8335:3: (kw= '!' this_INT_1= RULE_INT )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8336:2: kw= '!' this_INT_1= RULE_INT
                    {
                    kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17581); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_0_0_0()); 
                        
                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMetadataValue17596); 

                    		current.merge(this_INT_1);
                        
                     
                        newLeafNode(this_INT_1, grammarAccess.getMetadataValueAccess().getINTTerminalRuleCall_0_0_1()); 
                        

                    }


                    }
                    break;
                case 2 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8349:6: (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8349:6: (kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}' )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8350:2: kw= '!{' this_NOBRACKET_3= RULE_NOBRACKET kw= '}'
                    {
                    kw=(Token)match(input,222,FOLLOW_222_in_ruleMetadataValue17622); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkLeftCurlyBracketKeyword_0_1_0()); 
                        
                    this_NOBRACKET_3=(Token)match(input,RULE_NOBRACKET,FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17637); 

                    		current.merge(this_NOBRACKET_3);
                        
                     
                        newLeafNode(this_NOBRACKET_3, grammarAccess.getMetadataValueAccess().getNOBRACKETTerminalRuleCall_0_1_1()); 
                        
                    kw=(Token)match(input,36,FOLLOW_36_in_ruleMetadataValue17655); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getRightCurlyBracketKeyword_0_1_2()); 
                        

                    }


                    }
                    break;
                case 3 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8369:6: (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET )
                    {
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8369:6: (kw= '!' this_NOBRACKET_6= RULE_NOBRACKET )
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8370:2: kw= '!' this_NOBRACKET_6= RULE_NOBRACKET
                    {
                    kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17676); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_0_2_0()); 
                        
                    this_NOBRACKET_6=(Token)match(input,RULE_NOBRACKET,FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17691); 

                    		current.merge(this_NOBRACKET_6);
                        
                     
                        newLeafNode(this_NOBRACKET_6, grammarAccess.getMetadataValueAccess().getNOBRACKETTerminalRuleCall_0_2_1()); 
                        

                    }


                    }
                    break;

            }

            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8382:3: (kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) ) )?
            int alt207=2;
            int LA207_0 = input.LA(1);

            if ( (LA207_0==25) ) {
                alt207=1;
            }
            switch (alt207) {
                case 1 :
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8383:2: kw= '=' ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) )
                    {
                    kw=(Token)match(input,25,FOLLOW_25_in_ruleMetadataValue17712); 

                            current.merge(kw);
                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getEqualsSignKeyword_1_0()); 
                        
                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8388:1: ( (kw= '!' this_INT_9= RULE_INT ) | (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' ) | (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET ) | (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? ) )
                    int alt206=4;
                    switch ( input.LA(1) ) {
                    case 201:
                        {
                        int LA206_1 = input.LA(2);

                        if ( (LA206_1==RULE_INT) ) {
                            alt206=1;
                        }
                        else if ( (LA206_1==RULE_NOBRACKET) ) {
                            alt206=3;
                        }
                        else {
                            NoViableAltException nvae =
                                new NoViableAltException("", 206, 1, input);

                            throw nvae;
                        }
                        }
                        break;
                    case 222:
                        {
                        alt206=2;
                        }
                        break;
                    case 223:
                        {
                        alt206=4;
                        }
                        break;
                    default:
                        NoViableAltException nvae =
                            new NoViableAltException("", 206, 0, input);

                        throw nvae;
                    }

                    switch (alt206) {
                        case 1 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8388:2: (kw= '!' this_INT_9= RULE_INT )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8388:2: (kw= '!' this_INT_9= RULE_INT )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8389:2: kw= '!' this_INT_9= RULE_INT
                            {
                            kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17727); 

                                    current.merge(kw);
                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_1_1_0_0()); 
                                
                            this_INT_9=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMetadataValue17742); 

                            		current.merge(this_INT_9);
                                
                             
                                newLeafNode(this_INT_9, grammarAccess.getMetadataValueAccess().getINTTerminalRuleCall_1_1_0_1()); 
                                

                            }


                            }
                            break;
                        case 2 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8402:6: (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8402:6: (kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}' )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8403:2: kw= '!{' this_NOBRACKET_11= RULE_NOBRACKET kw= '}'
                            {
                            kw=(Token)match(input,222,FOLLOW_222_in_ruleMetadataValue17768); 

                                    current.merge(kw);
                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkLeftCurlyBracketKeyword_1_1_1_0()); 
                                
                            this_NOBRACKET_11=(Token)match(input,RULE_NOBRACKET,FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17783); 

                            		current.merge(this_NOBRACKET_11);
                                
                             
                                newLeafNode(this_NOBRACKET_11, grammarAccess.getMetadataValueAccess().getNOBRACKETTerminalRuleCall_1_1_1_1()); 
                                
                            kw=(Token)match(input,36,FOLLOW_36_in_ruleMetadataValue17801); 

                                    current.merge(kw);
                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getRightCurlyBracketKeyword_1_1_1_2()); 
                                

                            }


                            }
                            break;
                        case 3 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8422:6: (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8422:6: (kw= '!' this_NOBRACKET_14= RULE_NOBRACKET )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8423:2: kw= '!' this_NOBRACKET_14= RULE_NOBRACKET
                            {
                            kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17822); 

                                    current.merge(kw);
                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_1_1_2_0()); 
                                
                            this_NOBRACKET_14=(Token)match(input,RULE_NOBRACKET,FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17837); 

                            		current.merge(this_NOBRACKET_14);
                                
                             
                                newLeafNode(this_NOBRACKET_14, grammarAccess.getMetadataValueAccess().getNOBRACKETTerminalRuleCall_1_1_2_1()); 
                                

                            }


                            }
                            break;
                        case 4 :
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8436:6: (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? )
                            {
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8436:6: (kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )? )
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8437:2: kw= 'metadata' ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )?
                            {
                            kw=(Token)match(input,223,FOLLOW_223_in_ruleMetadataValue17863); 

                                    current.merge(kw);
                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getMetadataKeyword_1_1_3_0()); 
                                
                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8442:1: ( ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}' )?
                            int alt205=2;
                            int LA205_0 = input.LA(1);

                            if ( (LA205_0==201) ) {
                                int LA205_1 = input.LA(2);

                                if ( (LA205_1==34) ) {
                                    alt205=1;
                                }
                            }
                            else if ( (LA205_0==222) ) {
                                int LA205_2 = input.LA(2);

                                if ( (LA205_2==223) ) {
                                    alt205=1;
                                }
                            }
                            switch (alt205) {
                                case 1 :
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8442:2: ( (kw= '!' kw= '{' ) | kw= '!{' ) kw= 'metadata' kw= '!' this_STRING_21= RULE_STRING kw= ',' (kw= 'metadata' kw= '!' this_INT_25= RULE_INT ) kw= '}'
                                    {
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8442:2: ( (kw= '!' kw= '{' ) | kw= '!{' )
                                    int alt204=2;
                                    int LA204_0 = input.LA(1);

                                    if ( (LA204_0==201) ) {
                                        alt204=1;
                                    }
                                    else if ( (LA204_0==222) ) {
                                        alt204=2;
                                    }
                                    else {
                                        NoViableAltException nvae =
                                            new NoViableAltException("", 204, 0, input);

                                        throw nvae;
                                    }
                                    switch (alt204) {
                                        case 1 :
                                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8442:3: (kw= '!' kw= '{' )
                                            {
                                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8442:3: (kw= '!' kw= '{' )
                                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8443:2: kw= '!' kw= '{'
                                            {
                                            kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17879); 

                                                    current.merge(kw);
                                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_1_1_3_1_0_0_0()); 
                                                
                                            kw=(Token)match(input,34,FOLLOW_34_in_ruleMetadataValue17892); 

                                                    current.merge(kw);
                                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getLeftCurlyBracketKeyword_1_1_3_1_0_0_1()); 
                                                

                                            }


                                            }
                                            break;
                                        case 2 :
                                            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8456:2: kw= '!{'
                                            {
                                            kw=(Token)match(input,222,FOLLOW_222_in_ruleMetadataValue17912); 

                                                    current.merge(kw);
                                                    newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkLeftCurlyBracketKeyword_1_1_3_1_0_1()); 
                                                

                                            }
                                            break;

                                    }

                                    kw=(Token)match(input,223,FOLLOW_223_in_ruleMetadataValue17926); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getMetadataKeyword_1_1_3_1_1()); 
                                        
                                    kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17939); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_1_1_3_1_2()); 
                                        
                                    this_STRING_21=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleMetadataValue17954); 

                                    		current.merge(this_STRING_21);
                                        
                                     
                                        newLeafNode(this_STRING_21, grammarAccess.getMetadataValueAccess().getSTRINGTerminalRuleCall_1_1_3_1_3()); 
                                        
                                    kw=(Token)match(input,27,FOLLOW_27_in_ruleMetadataValue17972); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getCommaKeyword_1_1_3_1_4()); 
                                        
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8486:1: (kw= 'metadata' kw= '!' this_INT_25= RULE_INT )
                                    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8487:2: kw= 'metadata' kw= '!' this_INT_25= RULE_INT
                                    {
                                    kw=(Token)match(input,223,FOLLOW_223_in_ruleMetadataValue17986); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getMetadataKeyword_1_1_3_1_5_0()); 
                                        
                                    kw=(Token)match(input,201,FOLLOW_201_in_ruleMetadataValue17999); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getExclamationMarkKeyword_1_1_3_1_5_1()); 
                                        
                                    this_INT_25=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleMetadataValue18014); 

                                    		current.merge(this_INT_25);
                                        
                                     
                                        newLeafNode(this_INT_25, grammarAccess.getMetadataValueAccess().getINTTerminalRuleCall_1_1_3_1_5_2()); 
                                        

                                    }

                                    kw=(Token)match(input,36,FOLLOW_36_in_ruleMetadataValue18033); 

                                            current.merge(kw);
                                            newLeafNode(kw, grammarAccess.getMetadataValueAccess().getRightCurlyBracketKeyword_1_1_3_1_6()); 
                                        

                                    }
                                    break;

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMetadataValue"


    // $ANTLR start "entryRuleALIGNMENT"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8519:1: entryRuleALIGNMENT returns [String current=null] : iv_ruleALIGNMENT= ruleALIGNMENT EOF ;
    public final String entryRuleALIGNMENT() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleALIGNMENT = null;


        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8520:2: (iv_ruleALIGNMENT= ruleALIGNMENT EOF )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8521:2: iv_ruleALIGNMENT= ruleALIGNMENT EOF
            {
             newCompositeNode(grammarAccess.getALIGNMENTRule()); 
            pushFollow(FOLLOW_ruleALIGNMENT_in_entryRuleALIGNMENT18080);
            iv_ruleALIGNMENT=ruleALIGNMENT();

            state._fsp--;

             current =iv_ruleALIGNMENT.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleALIGNMENT18091); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleALIGNMENT"


    // $ANTLR start "ruleALIGNMENT"
    // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8528:1: ruleALIGNMENT returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'align' this_INT_1= RULE_INT ) ;
    public final AntlrDatatypeRuleToken ruleALIGNMENT() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_INT_1=null;

         enterRule(); 
            
        try {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8531:28: ( (kw= 'align' this_INT_1= RULE_INT ) )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8532:1: (kw= 'align' this_INT_1= RULE_INT )
            {
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8532:1: (kw= 'align' this_INT_1= RULE_INT )
            // ../de.upb.llvm_parser/src-gen/de/upb/llvm_parser/parser/antlr/internal/InternalLLVM.g:8533:2: kw= 'align' this_INT_1= RULE_INT
            {
            kw=(Token)match(input,87,FOLLOW_87_in_ruleALIGNMENT18129); 

                    current.merge(kw);
                    newLeafNode(kw, grammarAccess.getALIGNMENTAccess().getAlignKeyword_0()); 
                
            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleALIGNMENT18144); 

            		current.merge(this_INT_1);
                
             
                newLeafNode(this_INT_1, grammarAccess.getALIGNMENTAccess().getINTTerminalRuleCall_1()); 
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleALIGNMENT"

    // Delegated rules


    protected DFA23 dfa23 = new DFA23(this);
    protected DFA28 dfa28 = new DFA28(this);
    protected DFA110 dfa110 = new DFA110(this);
    protected DFA115 dfa115 = new DFA115(this);
    protected DFA198 dfa198 = new DFA198(this);
    protected DFA199 dfa199 = new DFA199(this);
    static final String DFA23_eotS =
        "\15\uffff";
    static final String DFA23_eofS =
        "\15\uffff";
    static final String DFA23_minS =
        "\1\7\1\11\1\uffff\11\11\1\uffff";
    static final String DFA23_maxS =
        "\1\44\1\57\1\uffff\11\u009b\1\uffff";
    static final String DFA23_acceptS =
        "\2\uffff\1\2\11\uffff\1\1";
    static final String DFA23_specialS =
        "\15\uffff}>";
    static final String[] DFA23_transitionS = {
            "\1\2\23\uffff\1\1\10\uffff\1\2",
            "\1\4\1\5\1\3\25\uffff\1\7\11\uffff\1\6\1\10\1\11\1\12\1\13",
            "",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\2\123\uffff\14"+
            "\2",
            ""
    };

    static final short[] DFA23_eot = DFA.unpackEncodedString(DFA23_eotS);
    static final short[] DFA23_eof = DFA.unpackEncodedString(DFA23_eofS);
    static final char[] DFA23_min = DFA.unpackEncodedStringToUnsignedChars(DFA23_minS);
    static final char[] DFA23_max = DFA.unpackEncodedStringToUnsignedChars(DFA23_maxS);
    static final short[] DFA23_accept = DFA.unpackEncodedString(DFA23_acceptS);
    static final short[] DFA23_special = DFA.unpackEncodedString(DFA23_specialS);
    static final short[][] DFA23_transition;

    static {
        int numStates = DFA23_transitionS.length;
        DFA23_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA23_transition[i] = DFA.unpackEncodedString(DFA23_transitionS[i]);
        }
    }

    class DFA23 extends DFA {

        public DFA23(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 23;
            this.eot = DFA23_eot;
            this.eof = DFA23_eof;
            this.min = DFA23_min;
            this.max = DFA23_max;
            this.accept = DFA23_accept;
            this.special = DFA23_special;
            this.transition = DFA23_transition;
        }
        public String getDescription() {
            return "()* loopback of 712:3: (otherlv_8= ',' ( (lv_type_9_0= ruleType ) ) ( rulePrimitive | this_INT_11= RULE_INT | this_INTEGER_12= RULE_INTEGER ) )*";
        }
    }
    static final String DFA28_eotS =
        "\15\uffff";
    static final String DFA28_eofS =
        "\15\uffff";
    static final String DFA28_minS =
        "\1\7\1\uffff\12\11\1\uffff";
    static final String DFA28_maxS =
        "\1\44\1\uffff\1\57\11\u009b\1\uffff";
    static final String DFA28_acceptS =
        "\1\uffff\1\2\12\uffff\1\1";
    static final String DFA28_specialS =
        "\15\uffff}>";
    static final String[] DFA28_transitionS = {
            "\1\1\23\uffff\1\2\10\uffff\1\1",
            "",
            "\1\4\1\5\1\3\25\uffff\1\7\11\uffff\1\6\1\10\1\11\1\12\1\13",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\2\14\26\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            ""
    };

    static final short[] DFA28_eot = DFA.unpackEncodedString(DFA28_eotS);
    static final short[] DFA28_eof = DFA.unpackEncodedString(DFA28_eofS);
    static final char[] DFA28_min = DFA.unpackEncodedStringToUnsignedChars(DFA28_minS);
    static final char[] DFA28_max = DFA.unpackEncodedStringToUnsignedChars(DFA28_maxS);
    static final short[] DFA28_accept = DFA.unpackEncodedString(DFA28_acceptS);
    static final short[] DFA28_special = DFA.unpackEncodedString(DFA28_specialS);
    static final short[][] DFA28_transition;

    static {
        int numStates = DFA28_transitionS.length;
        DFA28_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA28_transition[i] = DFA.unpackEncodedString(DFA28_transitionS[i]);
        }
    }

    class DFA28 extends DFA {

        public DFA28(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 28;
            this.eot = DFA28_eot;
            this.eof = DFA28_eof;
            this.min = DFA28_min;
            this.max = DFA28_max;
            this.accept = DFA28_accept;
            this.special = DFA28_special;
            this.transition = DFA28_transition;
        }
        public String getDescription() {
            return "()* loopback of 814:3: (otherlv_17= ',' ( (lv_type_18_0= ruleType ) ) ( rulePrimitive | this_INT_20= RULE_INT | this_INTEGER_21= RULE_INTEGER ) )*";
        }
    }
    static final String DFA110_eotS =
        "\27\uffff";
    static final String DFA110_eofS =
        "\27\uffff";
    static final String DFA110_minS =
        "\1\73\1\125\25\uffff";
    static final String DFA110_maxS =
        "\1\u00c0\1\130\25\uffff";
    static final String DFA110_acceptS =
        "\2\uffff\1\1\1\2\1\3\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1"+
        "\15\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\25";
    static final String DFA110_specialS =
        "\27\uffff}>";
    static final String[] DFA110_transitionS = {
            "\1\1\1\5\1\uffff\1\16\1\15\1\4\7\uffff\1\20\1\21\1\uffff\2"+
            "\7\1\6\1\uffff\2\6\4\uffff\1\2\2\uffff\1\3\2\24\10\uffff\1\17"+
            "\41\uffff\1\22\1\26\4\uffff\1\23\1\25\1\14\1\13\1\12\14\11\2"+
            "\10\24\uffff\12\7\2\uffff\3\6",
            "\1\2\2\uffff\1\3",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
    };

    static final short[] DFA110_eot = DFA.unpackEncodedString(DFA110_eotS);
    static final short[] DFA110_eof = DFA.unpackEncodedString(DFA110_eofS);
    static final char[] DFA110_min = DFA.unpackEncodedStringToUnsignedChars(DFA110_minS);
    static final char[] DFA110_max = DFA.unpackEncodedStringToUnsignedChars(DFA110_maxS);
    static final short[] DFA110_accept = DFA.unpackEncodedString(DFA110_acceptS);
    static final short[] DFA110_special = DFA.unpackEncodedString(DFA110_specialS);
    static final short[][] DFA110_transition;

    static {
        int numStates = DFA110_transitionS.length;
        DFA110_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA110_transition[i] = DFA.unpackEncodedString(DFA110_transitionS[i]);
        }
    }

    class DFA110 extends DFA {

        public DFA110(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 110;
            this.eot = DFA110_eot;
            this.eof = DFA110_eof;
            this.min = DFA110_min;
            this.max = DFA110_max;
            this.accept = DFA110_accept;
            this.special = DFA110_special;
            this.transition = DFA110_transition;
        }
        public String getDescription() {
            return "2722:1: ( ( (otherlv_0= 'volatile' )? this_Load_1= ruleLoad ) | ( (otherlv_2= 'volatile' )? this_Store_3= ruleStore ) | this_Fence_4= ruleFence | this_GetElementPtr_5= ruleGetElementPtr | this_LOGICAL_OP_6= ruleLOGICAL_OP | this_ARITHMETIC_OP_7= ruleARITHMETIC_OP | this_Compare_8= ruleCompare | this_Cast_9= ruleCast | this_ShuffleVector_10= ruleShuffleVector | this_InsertElement_11= ruleInsertElement | this_ExtractElement_12= ruleExtractElement | this_InsertValue_13= ruleInsertValue | this_ExtractValue_14= ruleExtractValue | this_Alloc_15= ruleAlloc | this_CmpXchg_16= ruleCmpXchg | this_AtomicRMW_17= ruleAtomicRMW | this_PHI_18= rulePHI | this_Select_19= ruleSelect | this_Call_20= ruleCall | this_VA_Arg_21= ruleVA_Arg | this_LandingPad_22= ruleLandingPad )";
        }
    }
    static final String DFA115_eotS =
        "\15\uffff";
    static final String DFA115_eofS =
        "\1\1\14\uffff";
    static final String DFA115_minS =
        "\1\4\1\uffff\12\11\1\uffff";
    static final String DFA115_maxS =
        "\1\u00ca\1\uffff\1\57\11\u009b\1\uffff";
    static final String DFA115_acceptS =
        "\1\uffff\1\2\12\uffff\1\1";
    static final String DFA115_specialS =
        "\15\uffff}>";
    static final String[] DFA115_transitionS = {
            "\1\1\2\uffff\1\1\1\uffff\3\1\10\uffff\1\1\1\uffff\1\1\3\uffff"+
            "\1\1\1\2\5\uffff\1\1\1\uffff\2\1\6\uffff\5\1\1\uffff\1\1\1\uffff"+
            "\1\1\7\uffff\2\1\1\uffff\3\1\7\uffff\2\1\1\uffff\3\1\1\uffff"+
            "\2\1\4\uffff\1\1\2\uffff\3\1\10\uffff\1\1\41\uffff\2\1\1\uffff"+
            "\1\1\2\uffff\23\1\24\uffff\12\1\2\uffff\6\1\1\uffff\3\1\2\uffff"+
            "\1\1",
            "",
            "\1\4\1\5\1\3\25\uffff\1\7\11\uffff\1\6\1\10\1\11\1\12\1\13",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            "\3\14\25\uffff\1\14\11\uffff\5\14\14\uffff\1\1\123\uffff\14"+
            "\1",
            ""
    };

    static final short[] DFA115_eot = DFA.unpackEncodedString(DFA115_eotS);
    static final short[] DFA115_eof = DFA.unpackEncodedString(DFA115_eofS);
    static final char[] DFA115_min = DFA.unpackEncodedStringToUnsignedChars(DFA115_minS);
    static final char[] DFA115_max = DFA.unpackEncodedStringToUnsignedChars(DFA115_maxS);
    static final short[] DFA115_accept = DFA.unpackEncodedString(DFA115_acceptS);
    static final short[] DFA115_special = DFA.unpackEncodedString(DFA115_specialS);
    static final short[][] DFA115_transition;

    static {
        int numStates = DFA115_transitionS.length;
        DFA115_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA115_transition[i] = DFA.unpackEncodedString(DFA115_transitionS[i]);
        }
    }

    class DFA115 extends DFA {

        public DFA115(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 115;
            this.eot = DFA115_eot;
            this.eof = DFA115_eof;
            this.min = DFA115_min;
            this.max = DFA115_max;
            this.accept = DFA115_accept;
            this.special = DFA115_special;
            this.transition = DFA115_transition;
        }
        public String getDescription() {
            return "()* loopback of 3045:2: (otherlv_7= ',' ( (lv_indicetypes_8_0= ruleType ) ) ( (lv_indices_9_0= ruleType ) ) )*";
        }
    }
    static final String DFA198_eotS =
        "\16\uffff";
    static final String DFA198_eofS =
        "\2\uffff\1\4\2\uffff\11\3";
    static final String DFA198_minS =
        "\1\u00c7\2\11\2\uffff\11\11";
    static final String DFA198_maxS =
        "\1\u00c7\1\57\1\u00ca\2\uffff\11\u00ca";
    static final String DFA198_acceptS =
        "\3\uffff\1\2\1\1\11\uffff";
    static final String DFA198_specialS =
        "\16\uffff}>";
    static final String[] DFA198_transitionS = {
            "\1\1",
            "\3\3\25\uffff\1\3\11\uffff\1\2\4\3",
            "\1\6\1\7\1\5\2\uffff\1\4\14\uffff\1\4\5\uffff\1\11\2\uffff"+
            "\1\4\6\uffff\1\10\1\12\1\13\1\14\1\15\5\uffff\1\4\5\uffff\2"+
            "\4\1\uffff\3\4\7\uffff\2\4\1\uffff\3\4\1\uffff\2\4\4\uffff\1"+
            "\4\2\uffff\3\4\10\uffff\1\4\41\uffff\2\4\4\uffff\23\4\24\uffff"+
            "\12\4\2\uffff\6\4\1\uffff\3\4\2\uffff\1\4",
            "",
            "",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3",
            "\3\3\2\uffff\1\3\12\uffff\1\4\1\uffff\1\3\5\uffff\1\3\2\uffff"+
            "\1\3\6\uffff\5\3\5\uffff\1\3\5\uffff\2\3\1\uffff\3\3\7\uffff"+
            "\2\3\1\uffff\3\3\1\uffff\2\3\4\uffff\1\3\2\uffff\3\3\10\uffff"+
            "\1\3\41\uffff\2\3\4\uffff\23\3\24\uffff\12\3\2\uffff\6\3\1\uffff"+
            "\3\3\2\uffff\1\3"
    };

    static final short[] DFA198_eot = DFA.unpackEncodedString(DFA198_eotS);
    static final short[] DFA198_eof = DFA.unpackEncodedString(DFA198_eofS);
    static final char[] DFA198_min = DFA.unpackEncodedStringToUnsignedChars(DFA198_minS);
    static final char[] DFA198_max = DFA.unpackEncodedStringToUnsignedChars(DFA198_maxS);
    static final short[] DFA198_accept = DFA.unpackEncodedString(DFA198_acceptS);
    static final short[] DFA198_special = DFA.unpackEncodedString(DFA198_specialS);
    static final short[][] DFA198_transition;

    static {
        int numStates = DFA198_transitionS.length;
        DFA198_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA198_transition[i] = DFA.unpackEncodedString(DFA198_transitionS[i]);
        }
    }

    class DFA198 extends DFA {

        public DFA198(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 198;
            this.eot = DFA198_eot;
            this.eof = DFA198_eof;
            this.min = DFA198_min;
            this.max = DFA198_max;
            this.accept = DFA198_accept;
            this.special = DFA198_special;
            this.transition = DFA198_transition;
        }
        public String getDescription() {
            return "7840:1: ( ( () otherlv_1= 'ret' otherlv_2= 'void' (otherlv_3= ',' otherlv_4= '!dbg' otherlv_5= '!' this_INT_6= RULE_INT )? ) | (otherlv_7= 'ret' ( (lv_returntype_8_0= ruleType ) ) ( (lv_returnvalue_9_0= ruleType ) ) (otherlv_10= ',' otherlv_11= '!dbg' otherlv_12= '!' this_INT_13= RULE_INT )? ) )";
        }
    }
    static final String DFA199_eotS =
        "\26\uffff";
    static final String DFA199_eofS =
        "\13\uffff\11\25\2\uffff";
    static final String DFA199_minS =
        "\1\u00ca\23\11\2\uffff";
    static final String DFA199_maxS =
        "\1\u00ca\12\57\11\u00ca\2\uffff";
    static final String DFA199_acceptS =
        "\24\uffff\1\2\1\1";
    static final String DFA199_specialS =
        "\26\uffff}>";
    static final String[] DFA199_transitionS = {
            "\1\1",
            "\1\3\1\4\1\2\25\uffff\1\6\11\uffff\1\5\1\7\1\10\1\11\1\12",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\1\14\1\15\1\13\25\uffff\1\17\11\uffff\1\16\1\20\1\21\1\22"+
            "\1\23",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "\3\25\2\uffff\1\25\14\uffff\1\24\5\uffff\1\25\2\uffff\1\25"+
            "\6\uffff\5\25\5\uffff\1\25\5\uffff\2\25\1\uffff\3\25\7\uffff"+
            "\2\25\1\uffff\3\25\1\uffff\2\25\4\uffff\1\25\2\uffff\3\25\10"+
            "\uffff\1\25\41\uffff\2\25\4\uffff\23\25\24\uffff\12\25\2\uffff"+
            "\6\25\1\uffff\3\25\2\uffff\1\25",
            "",
            ""
    };

    static final short[] DFA199_eot = DFA.unpackEncodedString(DFA199_eotS);
    static final short[] DFA199_eof = DFA.unpackEncodedString(DFA199_eofS);
    static final char[] DFA199_min = DFA.unpackEncodedStringToUnsignedChars(DFA199_minS);
    static final char[] DFA199_max = DFA.unpackEncodedStringToUnsignedChars(DFA199_maxS);
    static final short[] DFA199_accept = DFA.unpackEncodedString(DFA199_acceptS);
    static final short[] DFA199_special = DFA.unpackEncodedString(DFA199_specialS);
    static final short[][] DFA199_transition;

    static {
        int numStates = DFA199_transitionS.length;
        DFA199_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA199_transition[i] = DFA.unpackEncodedString(DFA199_transitionS[i]);
        }
    }

    class DFA199 extends DFA {

        public DFA199(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 199;
            this.eot = DFA199_eot;
            this.eof = DFA199_eof;
            this.min = DFA199_min;
            this.max = DFA199_max;
            this.accept = DFA199_accept;
            this.special = DFA199_special;
            this.transition = DFA199_transition;
        }
        public String getDescription() {
            return "7948:1: ( (otherlv_0= 'br' ( (lv_destinationtype_1_0= ruleType ) ) ( (lv_destination_2_0= ruleType ) ) ) | (otherlv_3= 'br' ( (lv_condtype_4_0= ruleType ) ) ( (lv_condvalue_5_0= ruleType ) ) otherlv_6= ',' ( (lv_labelTruetype_7_0= ruleType ) ) ( (lv_labelTrue_8_0= ruleType ) ) otherlv_9= ',' ( (lv_labelFalsetype_10_0= ruleType ) ) ( (lv_labelFalse_11_0= ruleType ) ) ) )";
        }
    }
 

    public static final BitSet FOLLOW_ruleLLVM_in_entryRuleLLVM75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLLVM85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_ruleLLVM130 = new BitSet(new long[]{0x000AF80204500E02L});
    public static final BitSet FOLLOW_ruleAbstractElement_in_entryRuleAbstractElement166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAbstractElement176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTopLevelEntity_in_ruleAbstractElement224 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_RULE_SL_COMMENT_in_ruleAbstractElement235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMainLevelEntity_in_ruleAbstractElement266 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_RULE_SL_COMMENT_in_ruleAbstractElement277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTopLevelEntity_in_entryRuleTopLevelEntity315 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTopLevelEntity325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleTopLevelEntity363 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleTopLevelEntity375 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTopLevelEntity392 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleTopLevelEntity417 = new BitSet(new long[]{0x0000000001800000L});
    public static final BitSet FOLLOW_23_in_ruleTopLevelEntity430 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_24_in_ruleTopLevelEntity448 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleTopLevelEntity461 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTopLevelEntity478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleTopLevelEntity503 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleTopLevelEntity515 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleTopLevelEntity526 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTopLevelEntity542 = new BitSet(new long[]{0x0000000008000080L});
    public static final BitSet FOLLOW_27_in_ruleTopLevelEntity560 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleTopLevelEntity577 = new BitSet(new long[]{0x0000000008000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleTopLevelEntity595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMainLevelEntity_in_entryRuleMainLevelEntity631 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMainLevelEntity641 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionHeader_in_ruleMainLevelEntity688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleMainLevelEntity715 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_entryRuleNamedType750 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedType760 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleNamedType806 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleNamedType818 = new BitSet(new long[]{0xD80AFD07FC500E40L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x000000003FFFC001L});
    public static final BitSet FOLLOW_ruleLINKAGE_in_ruleNamedType835 = new BitSet(new long[]{0xD80AFD07FC500E40L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x000000003FFFC001L});
    public static final BitSet FOLLOW_28_in_ruleNamedType852 = new BitSet(new long[]{0xD80AFD07FC500E40L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x000000003FFFC001L});
    public static final BitSet FOLLOW_29_in_ruleNamedType870 = new BitSet(new long[]{0xD80AFD07FC500E40L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x000000003FFFC001L});
    public static final BitSet FOLLOW_30_in_ruleNamedType888 = new BitSet(new long[]{0xD80AFD07FC500E40L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x000000003FFFC001L});
    public static final BitSet FOLLOW_31_in_ruleNamedType904 = new BitSet(new long[]{0x0001010400000000L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleNamedType926 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpaque_in_ruleNamedType948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInstruction_in_ruleNamedType976 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleNamedType1004 = new BitSet(new long[]{0x0000000400000142L});
    public static final BitSet FOLLOW_ruleCastStructure_in_ruleNamedType1026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_CSTRING_in_ruleNamedType1044 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_32_in_ruleNamedType1056 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_33_in_ruleNamedType1074 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_27_in_ruleNamedType1089 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleNamedType1105 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleNamedType1138 = new BitSet(new long[]{0x0000000400000040L});
    public static final BitSet FOLLOW_ruleCastStructure_in_ruleNamedType1159 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlias_in_ruleNamedType1187 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleNamedType1215 = new BitSet(new long[]{0x0000000308000202L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleNamedType1227 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_32_in_ruleNamedType1241 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_33_in_ruleNamedType1259 = new BitSet(new long[]{0x0000000308000002L});
    public static final BitSet FOLLOW_27_in_ruleNamedType1274 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleNamedType1290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCastStructure_in_entryRuleCastStructure1329 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCastStructure1339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleCastStructure1377 = new BitSet(new long[]{0x100AF81A0C500E80L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleCastStructure1394 = new BitSet(new long[]{0x100AF81A0C500E80L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleType_in_ruleCastStructure1416 = new BitSet(new long[]{0x100AF81A0C500E80L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleCast_in_ruleCastStructure1440 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleCastStructure1459 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleCastStructure1484 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleCastStructure1500 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCastStructure1516 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_35_in_ruleCastStructure1530 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_27_in_ruleCastStructure1545 = new BitSet(new long[]{0x000AF8120C500E80L});
    public static final BitSet FOLLOW_ruleType_in_ruleCastStructure1566 = new BitSet(new long[]{0x000AF8120C500E80L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleCastStructure1583 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleCastStructure1599 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCastStructure1615 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_27_in_ruleCastStructure1632 = new BitSet(new long[]{0x100AF80204500E00L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleType_in_ruleCastStructure1653 = new BitSet(new long[]{0x1000000000000000L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleCast_in_ruleCastStructure1676 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleCastStructure1695 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_35_in_ruleCastStructure1712 = new BitSet(new long[]{0x0000001808000080L});
    public static final BitSet FOLLOW_27_in_ruleCastStructure1727 = new BitSet(new long[]{0x000AF8120C500E80L});
    public static final BitSet FOLLOW_ruleType_in_ruleCastStructure1748 = new BitSet(new long[]{0x000AF8120C500E80L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleCastStructure1765 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleCastStructure1781 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCastStructure1797 = new BitSet(new long[]{0x0000001008000080L});
    public static final BitSet FOLLOW_36_in_ruleCastStructure1817 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleCastStructure1834 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType1871 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType1882 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleType1922 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleType1948 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleType1974 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleType2007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleARRAY_in_entryRuleARRAY2052 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleARRAY2062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleARRAY2107 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleARRAY2117 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleARRAY2128 = new BitSet(new long[]{0x0000010400001C00L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleARRAY2140 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleARRAY2156 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleARRAY2182 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_F_POINT_in_ruleARRAY2199 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleARRAY2210 = new BitSet(new long[]{0x0000000000000042L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleARRAY2221 = new BitSet(new long[]{0x0000010400000000L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleARRAY2241 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_ruleValueStruct_in_ruleARRAY2262 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleARRAY2273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueStruct_in_entryRuleValueStruct2310 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValueStruct2320 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleValueStruct2357 = new BitSet(new long[]{0x000AF8420C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleValueStruct2378 = new BitSet(new long[]{0x000AF8420C500E00L});
    public static final BitSet FOLLOW_38_in_ruleValueStruct2391 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleValueStruct2414 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleValueStruct2427 = new BitSet(new long[]{0x000AF85204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleValueStruct2448 = new BitSet(new long[]{0x000AF85204500E00L});
    public static final BitSet FOLLOW_38_in_ruleValueStruct2461 = new BitSet(new long[]{0x000AF81204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleValueStruct2484 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleValueStruct2497 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStructure_in_entryRuleStructure2533 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStructure2543 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleStructure2590 = new BitSet(new long[]{0x001AF8520C502E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleStructure2614 = new BitSet(new long[]{0x0010005008002000L});
    public static final BitSet FOLLOW_38_in_ruleStructure2627 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleStructure2657 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleStructure2670 = new BitSet(new long[]{0x0010001008000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStructure2692 = new BitSet(new long[]{0x0000001008000000L});
    public static final BitSet FOLLOW_27_in_ruleStructure2706 = new BitSet(new long[]{0x001AF8520C502E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleStructure2729 = new BitSet(new long[]{0x0010005008002000L});
    public static final BitSet FOLLOW_38_in_ruleStructure2742 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleStructure2772 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleStructure2785 = new BitSet(new long[]{0x0010001008000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStructure2807 = new BitSet(new long[]{0x0000001008000000L});
    public static final BitSet FOLLOW_36_in_ruleStructure2824 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_39_in_ruleStructure2837 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_40_in_ruleStructure2868 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleStructure2880 = new BitSet(new long[]{0x001AF8120C502E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleStructure2903 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleStructure2930 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleStructure2943 = new BitSet(new long[]{0x0010001008000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStructure2965 = new BitSet(new long[]{0x0000001008000000L});
    public static final BitSet FOLLOW_27_in_ruleStructure2979 = new BitSet(new long[]{0x001AF8120C502E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleStructure3001 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleStructure3028 = new BitSet(new long[]{0x0010001008002000L});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleStructure3041 = new BitSet(new long[]{0x0010001008000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStructure3063 = new BitSet(new long[]{0x0000001008000000L});
    public static final BitSet FOLLOW_36_in_ruleStructure3080 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleStructure3092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlias_in_entryRuleAlias3129 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAlias3139 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleAlias3176 = new BitSet(new long[]{0x000AF80204500E00L,0x0000000000000000L,0x0000000000000000L,0x000000003FFFF800L});
    public static final BitSet FOLLOW_ruleALIAS_LINKAGE_in_ruleAlias3193 = new BitSet(new long[]{0x000AF80204500E00L,0x0000000000000000L,0x0000000000000000L,0x0000000000003800L});
    public static final BitSet FOLLOW_ruleVISIBILITY_in_ruleAlias3211 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAlias3233 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAlias3254 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAlias3275 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimitive_in_entryRulePrimitive3312 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrimitive3323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_43_in_rulePrimitive3361 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_33_in_rulePrimitive3380 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_rulePrimitive3399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_rulePrimitive3418 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_rulePrimitive3437 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_rulePrimitive3456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOpaque_in_entryRuleOpaque3497 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOpaque3508 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_48_in_ruleOpaque3545 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionHeader_in_entryRuleFunctionHeader3584 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunctionHeader3594 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleFunctionHeader3632 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L,0x0000000000000000L,0x000000003FFFF800L});
    public static final BitSet FOLLOW_ruleLINKAGE_in_ruleFunctionHeader3649 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L,0x0000000000000000L,0x0000000000003800L});
    public static final BitSet FOLLOW_ruleVISIBILITY_in_ruleFunctionHeader3667 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L});
    public static final BitSet FOLLOW_ruleCallingConv_in_ruleFunctionHeader3685 = new BitSet(new long[]{0x000AF80204500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleFunctionHeader3703 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleFunctionHeader3725 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleFunctionHeader3742 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_ruleParameterList_in_ruleFunctionHeader3768 = new BitSet(new long[]{0x0004000420000000L,0xFFF8000000800000L,0x000000000000001FL,0x0000000040000200L});
    public static final BitSet FOLLOW_29_in_ruleFunctionHeader3781 = new BitSet(new long[]{0x0004000420000000L,0xFFF8000000800000L,0x000000000000001FL,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleFunctionHeader3800 = new BitSet(new long[]{0x0004000420000000L,0xFFF8000000800000L,0x000000000000001FL,0x0000000040000200L});
    public static final BitSet FOLLOW_50_in_ruleFunctionHeader3814 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFunctionHeader3825 = new BitSet(new long[]{0x0004000420000000L,0xFFF8000000800000L,0x000000000000001FL,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleFunctionHeader3843 = new BitSet(new long[]{0x0004000420000000L,0xFFF8000000800000L,0x000000000000001FL,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleFunctionBody_in_ruleFunctionHeader3865 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_51_in_ruleFunctionHeader3885 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L,0x0000000000000000L,0x000000003FFFF800L});
    public static final BitSet FOLLOW_ruleLINKAGE_in_ruleFunctionHeader3902 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L,0x0000000000000000L,0x0000000000003800L});
    public static final BitSet FOLLOW_ruleVISIBILITY_in_ruleFunctionHeader3920 = new BitSet(new long[]{0x000AF80204500E00L,0x0007FFF7F8000000L});
    public static final BitSet FOLLOW_ruleCallingConv_in_ruleFunctionHeader3938 = new BitSet(new long[]{0x000AF80204500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleFunctionHeader3956 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleFunctionHeader3978 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleFunctionHeader3995 = new BitSet(new long[]{0x0010000000002000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleFunctionHeader4022 = new BitSet(new long[]{0x0004000020000002L,0xFFF8000000800000L,0x000000000000001FL});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleFunctionHeader4039 = new BitSet(new long[]{0x0004000020000002L,0xFFF8000000800000L,0x000000000000001FL});
    public static final BitSet FOLLOW_29_in_ruleFunctionHeader4052 = new BitSet(new long[]{0x0004000000000002L,0xFFF8000000800000L,0x000000000000001FL});
    public static final BitSet FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleFunctionHeader4071 = new BitSet(new long[]{0x0004000000000002L,0xFFF8000000800000L,0x000000000000001FL});
    public static final BitSet FOLLOW_50_in_ruleFunctionHeader4085 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleFunctionHeader4096 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleFunctionHeader4114 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleParameterList_in_entryRuleParameterList4152 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleParameterList4162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleParameterList4208 = new BitSet(new long[]{0x101AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4230 = new BitSet(new long[]{0x101AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleParameterList4251 = new BitSet(new long[]{0x100AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleParameterList4269 = new BitSet(new long[]{0x100AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleParameterList4288 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4308 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleParameterList4320 = new BitSet(new long[]{0x100AF80A0C500E00L,0x0000000000000000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4344 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_ruleCast_in_ruleParameterList4372 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_35_in_ruleParameterList4385 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleParameterList4416 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleParameterList4428 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_27_in_ruleParameterList4444 = new BitSet(new long[]{0x101AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4465 = new BitSet(new long[]{0x101AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleParameterList4486 = new BitSet(new long[]{0x100AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleParameterList4504 = new BitSet(new long[]{0x100AF80A0C500E00L,0x00000007F8800000L,0x000000000FFF0000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleParameterList4523 = new BitSet(new long[]{0x000AF80A0C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4543 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_ruleType_in_ruleParameterList4573 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_ruleCast_in_ruleParameterList4601 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_35_in_ruleParameterList4614 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleParameterList4645 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleParameterList4657 = new BitSet(new long[]{0x0000000808000000L});
    public static final BitSet FOLLOW_35_in_ruleParameterList4676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFunctionBody_in_entryRuleFunctionBody4712 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFunctionBody4722 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetadataValue_in_ruleFunctionBody4768 = new BitSet(new long[]{0x0000000400000000L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_34_in_ruleFunctionBody4781 = new BitSet(new long[]{0xD82AF80204504E00L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x00000000000004EFL});
    public static final BitSet FOLLOW_ruleBasicBlock_in_ruleFunctionBody4802 = new BitSet(new long[]{0xD82AF81204504E00L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x00000000000004EFL});
    public static final BitSet FOLLOW_36_in_ruleFunctionBody4815 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleMetadataValue_in_ruleFunctionBody4836 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleBasicBlock_in_entryRuleBasicBlock4873 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBasicBlock4883 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_NOBRACKET_in_ruleBasicBlock4928 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_53_in_ruleBasicBlock4949 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_ruleBasicBlock4977 = new BitSet(new long[]{0xD80AF80204500E00L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x00000000000004EFL});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleBasicBlock5002 = new BitSet(new long[]{0xD80AF80204500E00L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x00000000000004EFL});
    public static final BitSet FOLLOW_ruleInstruction_in_ruleBasicBlock5021 = new BitSet(new long[]{0xD80AF80204500E00L,0x000000080721BB01L,0xCFFC00003FFFF860L,0x00000000000004EFL});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleBasicBlock5043 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleBasicBlock5060 = new BitSet(new long[]{0x0000000000000800L,0x0000000000000000L,0x0000000000000000L,0x00000000000004EEL});
    public static final BitSet FOLLOW_ruleRet_Instr_in_ruleBasicBlock5083 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRet_Instr_in_entryRuleRet_Instr5119 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRet_Instr5129 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReturn_in_ruleRet_Instr5176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBranch_in_ruleRet_Instr5203 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSwitch_in_ruleRet_Instr5230 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndirectBranch_in_ruleRet_Instr5257 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInvoke_in_ruleRet_Instr5284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleResume_in_ruleRet_Instr5311 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnreachable_in_ruleRet_Instr5338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeList_in_entryRuleTypeList5373 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeList5383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleTypeList5429 = new BitSet(new long[]{0x079AF80A0C500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleType_in_ruleTypeList5451 = new BitSet(new long[]{0x0790000808000000L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleTypeList5472 = new BitSet(new long[]{0x0780000808000000L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleTypeList5490 = new BitSet(new long[]{0x0780000808000000L});
    public static final BitSet FOLLOW_27_in_ruleTypeList5504 = new BitSet(new long[]{0x079AF80A0C500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleType_in_ruleTypeList5525 = new BitSet(new long[]{0x0790000808000000L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleTypeList5546 = new BitSet(new long[]{0x0780000808000000L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleTypeList5564 = new BitSet(new long[]{0x0780000808000000L});
    public static final BitSet FOLLOW_35_in_ruleTypeList5583 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_39_in_ruleTypeList5596 = new BitSet(new long[]{0x0000008000000002L});
    public static final BitSet FOLLOW_55_in_ruleTypeList5617 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_56_in_ruleTypeList5635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_57_in_ruleTypeList5653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleTypeList5671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInstruction_in_entryRuleInstruction5708 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInstruction5718 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleInstruction5757 = new BitSet(new long[]{0x0800000000000000L,0x0000000000200000L});
    public static final BitSet FOLLOW_ruleLoad_in_ruleInstruction5781 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleInstruction5801 = new BitSet(new long[]{0x0800000000000000L,0x0000000001000000L});
    public static final BitSet FOLLOW_ruleStore_in_ruleInstruction5825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFence_in_ruleInstruction5853 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleInstruction5880 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLOGICAL_OP_in_ruleInstruction5907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleARITHMETIC_OP_in_ruleInstruction5934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompare_in_ruleInstruction5961 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCast_in_ruleInstruction5988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleShuffleVector_in_ruleInstruction6015 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInsertElement_in_ruleInstruction6042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtractElement_in_ruleInstruction6069 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInsertValue_in_ruleInstruction6096 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtractValue_in_ruleInstruction6123 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlloc_in_ruleInstruction6150 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCmpXchg_in_ruleInstruction6177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAtomicRMW_in_ruleInstruction6204 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePHI_in_ruleInstruction6231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSelect_in_ruleInstruction6258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCall_in_ruleInstruction6285 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVA_Arg_in_ruleInstruction6312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLandingPad_in_ruleInstruction6339 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_entryRuleGetElementPtr6374 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGetElementPtr6384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleGetElementPtr6421 = new BitSet(new long[]{0x201AF8020C500E40L});
    public static final BitSet FOLLOW_61_in_ruleGetElementPtr6434 = new BitSet(new long[]{0x001AF8020C500E40L});
    public static final BitSet FOLLOW_52_in_ruleGetElementPtr6449 = new BitSet(new long[]{0x001AF8020C500E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleGetElementPtr6475 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleGetElementPtr6496 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleGetElementPtr6525 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleGetElementPtr6547 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleGetElementPtr6560 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleGetElementPtr6581 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleGetElementPtr6602 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleExtractValue_in_entryRuleExtractValue6641 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtractValue6651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleExtractValue6688 = new BitSet(new long[]{0x0000010400000040L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleExtractValue6710 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleExtractValue6737 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleExtractValue6759 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleExtractValue6772 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleExtractValue6789 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleInsertValue_in_entryRuleInsertValue6832 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInsertValue6842 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleInsertValue6879 = new BitSet(new long[]{0x0000010400000000L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleInsertValue6900 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertValue6921 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleInsertValue6933 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertValue6954 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertValue6975 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleInsertValue6988 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleInsertValue7005 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleFence_in_entryRuleFence7048 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFence7058 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleFence7095 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_65_in_ruleFence7108 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_ruleFence7131 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_entryRuleATOMIC_ORDERING7168 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleATOMIC_ORDERING7179 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_66_in_ruleATOMIC_ORDERING7217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleATOMIC_ORDERING7236 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_ruleATOMIC_ORDERING7255 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_69_in_ruleATOMIC_ORDERING7274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleATOMIC_ORDERING7293 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_ruleATOMIC_ORDERING7312 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCmpXchg_in_entryRuleCmpXchg7352 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCmpXchg7362 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_ruleCmpXchg7399 = new BitSet(new long[]{0x080AF8020C500E00L});
    public static final BitSet FOLLOW_59_in_ruleCmpXchg7412 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7435 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7456 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleCmpXchg7468 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7489 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7510 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleCmpXchg7522 = new BitSet(new long[]{0x000AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7543 = new BitSet(new long[]{0x000AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleCmpXchg7564 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_65_in_ruleCmpXchg7577 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_ruleCmpXchg7600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAtomicRMW_in_entryRuleAtomicRMW7636 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAtomicRMW7646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_ruleAtomicRMW7683 = new BitSet(new long[]{0x0800000000000000L,0x00000000001FFC00L});
    public static final BitSet FOLLOW_59_in_ruleAtomicRMW7696 = new BitSet(new long[]{0x0800000000000000L,0x00000000001FFC00L});
    public static final BitSet FOLLOW_ruleBIN_OP_in_ruleAtomicRMW7714 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAtomicRMW7734 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAtomicRMW7755 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleAtomicRMW7767 = new BitSet(new long[]{0x000AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleAtomicRMW7788 = new BitSet(new long[]{0x000AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleAtomicRMW7809 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_65_in_ruleAtomicRMW7822 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_ruleAtomicRMW7845 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBIN_OP_in_entryRuleBIN_OP7882 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBIN_OP7893 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_ruleBIN_OP7931 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleBIN_OP7950 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleBIN_OP7969 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_ruleBIN_OP7988 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_ruleBIN_OP8007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_ruleBIN_OP8026 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleBIN_OP8045 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_ruleBIN_OP8064 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_ruleBIN_OP8083 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleBIN_OP8102 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_84_in_ruleBIN_OP8121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLoad_in_entryRuleLoad8161 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLoad8171 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleLoad8209 = new BitSet(new long[]{0x081AF8020C500E00L});
    public static final BitSet FOLLOW_59_in_ruleLoad8222 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLoad8245 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleLoad8266 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLoad8288 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleLoad8301 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleLoad8318 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleMetadataValue_in_ruleLoad8340 = new BitSet(new long[]{0x0000000008000002L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_85_in_ruleLoad8364 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
    public static final BitSet FOLLOW_86_in_ruleLoad8376 = new BitSet(new long[]{0x081AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_59_in_ruleLoad8389 = new BitSet(new long[]{0x001AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleLoad8412 = new BitSet(new long[]{0x001AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleLoad8433 = new BitSet(new long[]{0x0010000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleLoad8454 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_65_in_ruleLoad8468 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_ruleLoad8491 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleLoad8504 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_ruleLoad8516 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleLoad8533 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleStore_in_entryRuleStore8577 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleStore8587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_88_in_ruleStore8625 = new BitSet(new long[]{0x181AF8020C500E00L});
    public static final BitSet FOLLOW_59_in_ruleStore8638 = new BitSet(new long[]{0x101AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8661 = new BitSet(new long[]{0x101AF8020C500E00L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStore8682 = new BitSet(new long[]{0x100AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8705 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleStore8733 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleStore8745 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleStore8759 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8780 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStore8801 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8823 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleStore8836 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleStore8853 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleMetadataValue_in_ruleStore8875 = new BitSet(new long[]{0x0000000008000002L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_88_in_ruleStore8899 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
    public static final BitSet FOLLOW_86_in_ruleStore8911 = new BitSet(new long[]{0x081AF8020C500E00L});
    public static final BitSet FOLLOW_59_in_ruleStore8924 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8947 = new BitSet(new long[]{0x001AF8020C500E00L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStore8968 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleStore8990 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleStore9002 = new BitSet(new long[]{0x001AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleStore9023 = new BitSet(new long[]{0x001AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleStore9044 = new BitSet(new long[]{0x000AF80204500E00L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleType_in_ruleStore9066 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_65_in_ruleStore9079 = new BitSet(new long[]{0x0000000000000000L,0x00000000000000FEL});
    public static final BitSet FOLLOW_ruleATOMIC_ORDERING_in_ruleStore9102 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleStore9115 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_87_in_ruleStore9127 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleStore9144 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCall_in_entryRuleCall9188 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCall9198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_89_in_ruleCall9236 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
    public static final BitSet FOLLOW_90_in_ruleCall9250 = new BitSet(new long[]{0x001AF80204500E00L,0x0007FFF7F8000000L});
    public static final BitSet FOLLOW_ruleCallingConv_in_ruleCall9267 = new BitSet(new long[]{0x001AF80204500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleCall9285 = new BitSet(new long[]{0x001AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCall9307 = new BitSet(new long[]{0x001AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCall9328 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_ruleParameterList_in_ruleCall9349 = new BitSet(new long[]{0x0000000000000002L,0xFFF8000000000000L,0x000000000000001FL});
    public static final BitSet FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleCall9366 = new BitSet(new long[]{0x0000000000000002L,0xFFF8000000000000L,0x000000000000001FL});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_entryRuleRETURN_ATTRIBUTES9404 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRETURN_ATTRIBUTES9415 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_91_in_ruleRETURN_ATTRIBUTES9453 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_92_in_ruleRETURN_ATTRIBUTES9472 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_93_in_ruleRETURN_ATTRIBUTES9491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_94_in_ruleRETURN_ATTRIBUTES9510 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_ruleRETURN_ATTRIBUTES9529 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_96_in_ruleRETURN_ATTRIBUTES9548 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_97_in_ruleRETURN_ATTRIBUTES9567 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_98_in_ruleRETURN_ATTRIBUTES9586 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlloc_in_entryRuleAlloc9626 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAlloc9636 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_99_in_ruleAlloc9673 = new BitSet(new long[]{0x001AF80204500E00L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleAlloc9693 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleAlloc9713 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleAlloc9749 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleAlloc9770 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleAlloc9785 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAlloc9806 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleAlloc9827 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleAlloc9842 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_ruleAlloc9858 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCallingConv_in_entryRuleCallingConv9896 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCallingConv9907 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_100_in_ruleCallingConv9945 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_101_in_ruleCallingConv9964 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_ruleCallingConv9983 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_103_in_ruleCallingConv10002 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_104_in_ruleCallingConv10021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_105_in_ruleCallingConv10040 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_106_in_ruleCallingConv10059 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_107_in_ruleCallingConv10078 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_108_in_ruleCallingConv10097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_109_in_ruleCallingConv10116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_110_in_ruleCallingConv10135 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_111_in_ruleCallingConv10154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_112_in_ruleCallingConv10173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_113_in_ruleCallingConv10192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_114_in_ruleCallingConv10212 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleCallingConv10225 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleCallingConv10240 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleCallingConv10258 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleCallingConv10273 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleFUNCTION_ATTRIBUTES_in_entryRuleFUNCTION_ATTRIBUTES10320 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleFUNCTION_ATTRIBUTES10331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_115_in_ruleFUNCTION_ATTRIBUTES10369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_116_in_ruleFUNCTION_ATTRIBUTES10389 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_52_in_ruleFUNCTION_ATTRIBUTES10402 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleFUNCTION_ATTRIBUTES10415 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleFUNCTION_ATTRIBUTES10430 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleFUNCTION_ATTRIBUTES10448 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleFUNCTION_ATTRIBUTES10461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_117_in_ruleFUNCTION_ATTRIBUTES10481 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_118_in_ruleFUNCTION_ATTRIBUTES10500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_119_in_ruleFUNCTION_ATTRIBUTES10519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_120_in_ruleFUNCTION_ATTRIBUTES10538 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_121_in_ruleFUNCTION_ATTRIBUTES10557 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_122_in_ruleFUNCTION_ATTRIBUTES10576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_123_in_ruleFUNCTION_ATTRIBUTES10595 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_124_in_ruleFUNCTION_ATTRIBUTES10614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_125_in_ruleFUNCTION_ATTRIBUTES10633 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_126_in_ruleFUNCTION_ATTRIBUTES10652 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_127_in_ruleFUNCTION_ATTRIBUTES10671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_128_in_ruleFUNCTION_ATTRIBUTES10690 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_129_in_ruleFUNCTION_ATTRIBUTES10709 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_130_in_ruleFUNCTION_ATTRIBUTES10728 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_131_in_ruleFUNCTION_ATTRIBUTES10747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_132_in_ruleFUNCTION_ATTRIBUTES10766 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePHI_in_entryRulePHI10806 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePHI10816 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_133_in_rulePHI10853 = new BitSet(new long[]{0x000AF80204500E40L});
    public static final BitSet FOLLOW_ruleType_in_rulePHI10869 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_rulePHI10879 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleValuePair_in_rulePHI10899 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_rulePHI10910 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_rulePHI10922 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_rulePHI10933 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleValuePair_in_rulePHI10953 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_rulePHI10964 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_ruleValuePair_in_entryRuleValuePair11001 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValuePair11011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleValuePair11057 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleValuePair11069 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleValuePair11090 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLandingPad_in_entryRuleLandingPad11126 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLandingPad11136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_134_in_ruleLandingPad11173 = new BitSet(new long[]{0x0000010400000000L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleLandingPad11194 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000080L});
    public static final BitSet FOLLOW_135_in_ruleLandingPad11206 = new BitSet(new long[]{0x002AF80204500E00L,0x0000000000000000L,0x000000000FFF0600L});
    public static final BitSet FOLLOW_ruleType_in_ruleLandingPad11227 = new BitSet(new long[]{0x002AF80204500E00L,0x0000000000000000L,0x000000000FFF0600L});
    public static final BitSet FOLLOW_ruleType_in_ruleLandingPad11249 = new BitSet(new long[]{0x002AF80204500E00L,0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleCAST_TYPE_in_ruleLandingPad11277 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_52_in_ruleLandingPad11289 = new BitSet(new long[]{0x000AF80204502E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLandingPad11310 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_RULE_OREST_in_ruleLandingPad11321 = new BitSet(new long[]{0x0000000000000800L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleLandingPad11331 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_136_in_ruleLandingPad11342 = new BitSet(new long[]{0x000AF80A04500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLandingPad11363 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleLandingPad11375 = new BitSet(new long[]{0x002AF80204500E00L,0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_137_in_ruleLandingPad11391 = new BitSet(new long[]{0x002AF80204500E02L,0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleClause_in_ruleLandingPad11412 = new BitSet(new long[]{0x002AF80204500E02L,0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleClause_in_ruleLandingPad11441 = new BitSet(new long[]{0x002AF80204500E02L,0x0000000000000000L,0x0000000000000600L});
    public static final BitSet FOLLOW_ruleClause_in_entryRuleClause11479 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleClause11489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleClause11527 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleClause11548 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleClause11569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_138_in_ruleClause11589 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_ruleARRAY_in_ruleClause11610 = new BitSet(new long[]{0x000AF80304500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleClause11632 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleClause11650 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSelect_in_entryRuleSelect11688 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSelect11698 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_139_in_ruleSelect11735 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11756 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11777 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleSelect11789 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11810 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11831 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleSelect11843 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11864 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSelect11885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVA_Arg_in_entryRuleVA_Arg11921 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVA_Arg11931 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_140_in_ruleVA_Arg11968 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleVA_Arg11989 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleVA_Arg12010 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleVA_Arg12022 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleVA_Arg12043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtractElement_in_entryRuleExtractElement12079 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtractElement12089 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_141_in_ruleExtractElement12126 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleExtractElement12147 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleExtractElement12168 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleExtractElement12180 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleExtractElement12201 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleExtractElement12222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInsertElement_in_entryRuleInsertElement12258 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInsertElement12268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_142_in_ruleInsertElement12305 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12326 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12347 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleInsertElement12359 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12380 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12401 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleInsertElement12413 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12434 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInsertElement12455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleShuffleVector_in_entryRuleShuffleVector12491 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleShuffleVector12501 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_143_in_ruleShuffleVector12538 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12559 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12580 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleShuffleVector12592 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12613 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12634 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleShuffleVector12646 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12667 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleShuffleVector12688 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCast_in_entryRuleCast12724 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCast12734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCAST_TYPE_in_ruleCast12775 = new BitSet(new long[]{0x001AF94604500E00L});
    public static final BitSet FOLLOW_52_in_ruleCast12787 = new BitSet(new long[]{0x001AF94604500E00L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleCast12810 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCast12830 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleCast12866 = new BitSet(new long[]{0x0010004000000000L});
    public static final BitSet FOLLOW_38_in_ruleCast12879 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleCast12906 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleCast12936 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_52_in_ruleCast12950 = new BitSet(new long[]{0x101AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleType_in_ruleCast12975 = new BitSet(new long[]{0x000AF80A0C500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_27_in_ruleCast12988 = new BitSet(new long[]{0x008AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCast13009 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_55_in_ruleCast13021 = new BitSet(new long[]{0x000AF80A04500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleGetElementPtr_in_ruleCast13051 = new BitSet(new long[]{0x000AF80A04500E00L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_ruleType_in_ruleCast13073 = new BitSet(new long[]{0x0000000800000000L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_35_in_ruleCast13087 = new BitSet(new long[]{0x0000000800000000L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_136_in_ruleCast13101 = new BitSet(new long[]{0x001AF84204500E00L});
    public static final BitSet FOLLOW_RULE_VAR_TYPE_in_ruleCast13121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INTEGER_in_ruleCast13141 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrimitive_in_ruleCast13177 = new BitSet(new long[]{0x0010004000000000L});
    public static final BitSet FOLLOW_38_in_ruleCast13190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeList_in_ruleCast13217 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCAST_TYPE_in_entryRuleCAST_TYPE13257 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCAST_TYPE13268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_144_in_ruleCAST_TYPE13306 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_145_in_ruleCAST_TYPE13325 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_146_in_ruleCAST_TYPE13344 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_147_in_ruleCAST_TYPE13363 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_148_in_ruleCAST_TYPE13382 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_149_in_ruleCAST_TYPE13401 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_150_in_ruleCAST_TYPE13420 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_151_in_ruleCAST_TYPE13439 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_152_in_ruleCAST_TYPE13458 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_153_in_ruleCAST_TYPE13477 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_154_in_ruleCAST_TYPE13496 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_155_in_ruleCAST_TYPE13515 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCompare_in_entryRuleCompare13555 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCompare13565 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_156_in_ruleCompare13603 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x000000FFC0000000L});
    public static final BitSet FOLLOW_ruleI_PREDICATES_in_ruleCompare13619 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13639 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13660 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleCompare13672 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_157_in_ruleCompare13713 = new BitSet(new long[]{0x0000C00000000000L,0x0000000000000000L,0x0003FF0F00000000L});
    public static final BitSet FOLLOW_ruleF_PREDICATES_in_ruleCompare13729 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13749 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13770 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleCompare13782 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleCompare13803 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleI_PREDICATES_in_entryRuleI_PREDICATES13841 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleI_PREDICATES13852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_158_in_ruleI_PREDICATES13890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_159_in_ruleI_PREDICATES13909 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_160_in_ruleI_PREDICATES13928 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_161_in_ruleI_PREDICATES13947 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_162_in_ruleI_PREDICATES13966 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_163_in_ruleI_PREDICATES13985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_164_in_ruleI_PREDICATES14004 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_165_in_ruleI_PREDICATES14023 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_166_in_ruleI_PREDICATES14042 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_167_in_ruleI_PREDICATES14061 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleF_PREDICATES_in_entryRuleF_PREDICATES14102 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleF_PREDICATES14113 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleF_PREDICATES14151 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_168_in_ruleF_PREDICATES14170 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_169_in_ruleF_PREDICATES14189 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_170_in_ruleF_PREDICATES14208 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_171_in_ruleF_PREDICATES14227 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_172_in_ruleF_PREDICATES14246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_173_in_ruleF_PREDICATES14265 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_174_in_ruleF_PREDICATES14284 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_175_in_ruleF_PREDICATES14303 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_160_in_ruleF_PREDICATES14322 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_161_in_ruleF_PREDICATES14341 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_162_in_ruleF_PREDICATES14360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_163_in_ruleF_PREDICATES14379 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_176_in_ruleF_PREDICATES14398 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_177_in_ruleF_PREDICATES14417 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleF_PREDICATES14436 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleARITHMETIC_OP_in_entryRuleARITHMETIC_OP14476 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleARITHMETIC_OP14486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleARITHMETIC_OP14524 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_178_in_ruleARITHMETIC_OP14542 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_76_in_ruleARITHMETIC_OP14560 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_179_in_ruleARITHMETIC_OP14578 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_180_in_ruleARITHMETIC_OP14596 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_181_in_ruleARITHMETIC_OP14614 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_182_in_ruleARITHMETIC_OP14632 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_183_in_ruleARITHMETIC_OP14650 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_184_in_ruleARITHMETIC_OP14668 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_185_in_ruleARITHMETIC_OP14686 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_186_in_ruleARITHMETIC_OP14704 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_187_in_ruleARITHMETIC_OP14722 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_188_in_ruleARITHMETIC_OP14737 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_189_in_ruleARITHMETIC_OP14755 = new BitSet(new long[]{0x000AF8020C500E00L,0x0000000000000000L,0x3000000000000000L});
    public static final BitSet FOLLOW_189_in_ruleARITHMETIC_OP14769 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_188_in_ruleARITHMETIC_OP14787 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleARITHMETIC_OP14812 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleARITHMETIC_OP14833 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleARITHMETIC_OP14845 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleARITHMETIC_OP14866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLOGICAL_OP_in_entryRuleLOGICAL_OP14902 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLOGICAL_OP14912 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_190_in_ruleLOGICAL_OP14950 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_191_in_ruleLOGICAL_OP14968 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_192_in_ruleLOGICAL_OP14986 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_77_in_ruleLOGICAL_OP15004 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_79_in_ruleLOGICAL_OP15022 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_80_in_ruleLOGICAL_OP15040 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLOGICAL_OP15062 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLOGICAL_OP15083 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleLOGICAL_OP15095 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLOGICAL_OP15116 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIndirectBranch_in_entryRuleIndirectBranch15152 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIndirectBranch15162 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_193_in_ruleIndirectBranch15199 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleIndirectBranch15220 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleIndirectBranch15241 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleIndirectBranch15253 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleIndirectBranch15264 = new BitSet(new long[]{0x000AF80204500E80L});
    public static final BitSet FOLLOW_ruleLabelList_in_ruleIndirectBranch15284 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleIndirectBranch15296 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLabelList_in_entryRuleLabelList15331 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLabelList15341 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleLabelList15387 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleLabelList15408 = new BitSet(new long[]{0x000AF80204500E02L});
    public static final BitSet FOLLOW_ruleSwitch_in_entryRuleSwitch15445 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSwitch15455 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_194_in_ruleSwitch15492 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSwitch15513 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleSwitch15534 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleSwitch15546 = new BitSet(new long[]{0x000AF80204500E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleSwitch15567 = new BitSet(new long[]{0x000AF80204500E40L});
    public static final BitSet FOLLOW_ruleType_in_ruleSwitch15588 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_ARRAYL_in_ruleSwitch15599 = new BitSet(new long[]{0x000AF8020C500E80L});
    public static final BitSet FOLLOW_ruleJumpTable_in_ruleSwitch15619 = new BitSet(new long[]{0x0000000000000080L});
    public static final BitSet FOLLOW_RULE_ARRAYR_in_ruleSwitch15631 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleJumpTable_in_entryRuleJumpTable15666 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleJumpTable15676 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleJumpTable15722 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleJumpTable15743 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleJumpTable15755 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleJumpTable15776 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleJumpTable15797 = new BitSet(new long[]{0x000AF8020C500E02L});
    public static final BitSet FOLLOW_ruleInvoke_in_entryRuleInvoke15834 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInvoke15844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_195_in_ruleInvoke15881 = new BitSet(new long[]{0x001AF80204500E00L,0x0007FFF7F8000000L});
    public static final BitSet FOLLOW_ruleCallingConv_in_ruleInvoke15898 = new BitSet(new long[]{0x001AF80204500E00L,0x00000007F8000000L});
    public static final BitSet FOLLOW_ruleRETURN_ATTRIBUTES_in_ruleInvoke15916 = new BitSet(new long[]{0x001AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke15938 = new BitSet(new long[]{0x001AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke15959 = new BitSet(new long[]{0x0010000000000000L});
    public static final BitSet FOLLOW_ruleParameterList_in_ruleInvoke15980 = new BitSet(new long[]{0x0000000000000000L,0xFFF8000000000000L,0x000000000000011FL});
    public static final BitSet FOLLOW_ruleFUNCTION_ATTRIBUTES_in_ruleInvoke15997 = new BitSet(new long[]{0x0000000000000000L,0xFFF8000000000000L,0x000000000000011FL});
    public static final BitSet FOLLOW_136_in_ruleInvoke16010 = new BitSet(new long[]{0x000AF80204500E00L,0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke16031 = new BitSet(new long[]{0x000AF80204500E00L,0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke16052 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000010L});
    public static final BitSet FOLLOW_196_in_ruleInvoke16064 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke16085 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleInvoke16106 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleResume_in_entryRuleResume16142 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleResume16152 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_197_in_ruleResume16189 = new BitSet(new long[]{0x0000010400000000L});
    public static final BitSet FOLLOW_ruleStructure_in_ruleResume16210 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleResume16231 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnreachable_in_entryRuleUnreachable16267 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnreachable16277 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_198_in_ruleUnreachable16323 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReturn_in_entryRuleReturn16359 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReturn16369 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_199_in_ruleReturn16416 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleReturn16428 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleReturn16441 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_200_in_ruleReturn16453 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_201_in_ruleReturn16465 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleReturn16476 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_199_in_ruleReturn16497 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleReturn16518 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleReturn16539 = new BitSet(new long[]{0x0000000008000002L});
    public static final BitSet FOLLOW_27_in_ruleReturn16552 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
    public static final BitSet FOLLOW_200_in_ruleReturn16564 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_201_in_ruleReturn16576 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleReturn16587 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBranch_in_entryRuleBranch16625 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBranch16635 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_202_in_ruleBranch16673 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16694 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16715 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_202_in_ruleBranch16735 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16756 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16777 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleBranch16789 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16810 = new BitSet(new long[]{0x000AF8020C500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16831 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleBranch16843 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16864 = new BitSet(new long[]{0x000AF80204500E00L});
    public static final BitSet FOLLOW_ruleType_in_ruleBranch16885 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVISIBILITY_in_entryRuleVISIBILITY16923 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVISIBILITY16934 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_203_in_ruleVISIBILITY16972 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_204_in_ruleVISIBILITY16991 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_205_in_ruleVISIBILITY17010 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLINKAGE_in_entryRuleLINKAGE17051 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLINKAGE17062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_206_in_ruleLINKAGE17100 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_207_in_ruleLINKAGE17119 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_208_in_ruleLINKAGE17138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_209_in_ruleLINKAGE17157 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_210_in_ruleLINKAGE17176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_211_in_ruleLINKAGE17195 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_212_in_ruleLINKAGE17214 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_213_in_ruleLINKAGE17233 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_214_in_ruleLINKAGE17252 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_215_in_ruleLINKAGE17271 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_216_in_ruleLINKAGE17290 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_217_in_ruleLINKAGE17309 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleALIAS_LINKAGE_in_ruleLINKAGE17337 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleALIAS_LINKAGE_in_entryRuleALIAS_LINKAGE17383 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleALIAS_LINKAGE17394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_218_in_ruleALIAS_LINKAGE17432 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_219_in_ruleALIAS_LINKAGE17451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_220_in_ruleALIAS_LINKAGE17470 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_221_in_ruleALIAS_LINKAGE17489 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleMetadataValue_in_entryRuleMetadataValue17530 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMetadataValue17541 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17581 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMetadataValue17596 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_222_in_ruleMetadataValue17622 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17637 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleMetadataValue17655 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17676 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17691 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleMetadataValue17712 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x00000000C0000200L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17727 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMetadataValue17742 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_222_in_ruleMetadataValue17768 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17783 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleMetadataValue17801 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17822 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_RULE_NOBRACKET_in_ruleMetadataValue17837 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_223_in_ruleMetadataValue17863 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000000L,0x0000000040000200L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17879 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleMetadataValue17892 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_222_in_ruleMetadataValue17912 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_223_in_ruleMetadataValue17926 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17939 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleMetadataValue17954 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleMetadataValue17972 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000080000000L});
    public static final BitSet FOLLOW_223_in_ruleMetadataValue17986 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000000L,0x0000000000000200L});
    public static final BitSet FOLLOW_201_in_ruleMetadataValue17999 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleMetadataValue18014 = new BitSet(new long[]{0x0000001000000000L});
    public static final BitSet FOLLOW_36_in_ruleMetadataValue18033 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleALIGNMENT_in_entryRuleALIGNMENT18080 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleALIGNMENT18091 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_ruleALIGNMENT18129 = new BitSet(new long[]{0x0000000000000200L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleALIGNMENT18144 = new BitSet(new long[]{0x0000000000000002L});

}